2012-04-21 4 views
1

나는 다른 활동을 호출하기 위해 예를 들어 안드로이드에서 항상 다른 클래스를 만들지 만, 이제는 바이트를 조금 테스트하는 클래스를 만들고 싶습니다. 나는이 작업을 수행 할 수있는 간단한 방법을 만들었습니다, 그래서 내가 할 수있는 :Android에서 내 맞춤 클래스를 만드는 방법은 무엇입니까?

if(bitTest(my_byte,7)){ 
    ... 
} 

는 my_byte의 비트 7을 테스트하기 위해, 그러나 나는 같은 것을 할 싶습니다 : 나는이 작업을 수행 할 수있는 방법

if(my_byte.bitTest(7)){ 
    ... 
} 

을 ? 때문에 바이트 클래스 내부에 무엇을 수정할 수 없습니다.

+0

얼마나 유창합니까? – Sword22

+0

자바 primitve 유형을 확장 할 수 있다고 생각하지 않습니다. –

+0

Android와 관련이없는 것 같습니다. – Nick

답변

3

Sword22에서 제안하는 것을 수행하거나 실제로 바이트를 확장하지 않고 바이트를 캡슐화하는 클래스를 작성할 수 있습니다. 여기에도 바이트를 수정하는 방법을 유지할 수 있습니다. 또한

class Bits { 
    private byte value; 

    public Bits() { this(0x0); } 
    public Bits(byte initial) { value = initial; } 

    public boolean isSet(int bit) { 
    return (value & (1<<bit)) != 0; 
    } 

    public void set(int bit) { /* ... */ } 
    public void unset(int bit) { /* ... */ } 

    public byte toByte() { return value; } 
} 

당신이 플래그 당신의 설정을 저장하는 BitSet 또는 EnumSet 같은 것을 사용할 수 있다면 당신은 실제로 원시적 byte이 필요하거나 있는지 확인하십시오.

+0

멋진 생각이지만 확장 오류가 있습니다. Byte : "형식 비트는 최종 클래스 Byte를 서브 클래스로 만들 수 없습니다.":/그 이유를 알고 있습니까? 나는 이미 java.lang.Byte를 가져 왔습니다. – Andres

+0

아, 그게 바이트를 확장시키려는 의도가 아니 었어. 아무 것도 확장 할 필요가 없다. 내 대답을 편집했습니다. – Nick

1

Byte는 유한 클래스이므로이를 수행 할 수 없습니다.

당신이 할 수있는 일은 새로운 Byte 클래스 (예 : Byte2)가 상속을 사용하고 Byte2에 bitTest를 구현하는 것입니다.

그것은이 같은 것입니다 :

Public Class Byte2 extends Byte { 
    (...) 
    Public boolean bitTest(int i) { 

    } 
} 

그리고 바이트 2와 모든 "바이트"의를 선언합니다.

편집 : 의견보기.

+0

전에 시도했지만 오류가 발생합니다. 내 수업은 : 'class myByte extends Byte'이고 'myByte 클래스는 최종 클래스 Byte를 서브 클래 싱 할 수 없습니다.'오류가 발생합니다./ – Andres

+0

늦어서 생각하지 않았습니다. 내가 작성한 방식을 확장 할 수는 없지만 JDK src의 Byte 구현을 복사하여 새 MyByte 클래스로 만들 수 있습니다. 클래스가 최종 클래스라는 사실은 확장뿐만 아니라 상속도 방지합니다. – Sword22

+0

그래, 고마워. :) – Andres

관련 문제