2012-04-21 10 views
1

私はいつも別のアクティビティを呼び出すためにAndroidで異なるクラスを作成しますが、今はバイトをテストするクラスを作成したいと思います。私はこれを行うための簡単な方法を作成しましたので、私は行うことができます。Androidでカスタムクラスを作成するには?

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

my_byteのテストビット7に、しかしように私は何かをしたいと思います:私はこれをどのように行うことができます

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

?私はバイトクラスの内部のものを変更することはできません。

+0

あなたはどれくらい流暢ですか? – Sword22

+0

私はあなたがjava 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: "タイプビットは最終クラスのバイトをサブクラス化できません":/あなたはその理由を知っていますか?私はすでにjava.lang.Byteをインポートしました – Andres

+0

おっと、私はそれが何かを拡張する必要はありません、それを拡張することを意味しませんでした。私は私の答えを編集しました。 – Nick

1

Byteは有限クラスなので、それを行うことはできません。

あなたができることは、新しいByteクラス(Byte2など)を継承を使用してByte2に実装することです。

それはこのようなものになります。

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

    } 
} 

そして、バイト2ですべてのあなたの「バイト」Sを宣言。

編集:コメントを参照してください。

+0

私はそれを前に試しましたが、エラーが発生します。私のクラスは: 'class myByte extends Byte'です。エラー 'タイプmyByteは最終クラスByteをサブクラス化できません':/ – Andres

+0

私はそれが遅く、私は考えていませんでした。私が書いた方法を拡張することはできませんが、新しいMyByteクラスを作るために、JDK srcからByte実装をコピーすることができます。クラスが最終的であるという事実は、拡張を防ぐだけでなく、継承も防ぐ。 – Sword22

+0

ありがとうございました:) – Andres

関連する問題