1

私はいつもAndroidでさまざまなクラスを作成して、たとえばさまざまなアクティビティを呼び出しますが、今度は1バイトのビットをテストするクラスを作成したいと思います。これを行うための簡単なメソッドを作成したので、次のことができます。

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

my_byteのビット7をテストしますが、次のようなことをしたいと思います。

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

これどうやってするの?バイトクラス内にあるものを変更できないためです。

4

2 に答える 2

3

Sword22が提案することを実行するか、実際にByteを拡張せずにバイトをカプセル化するクラスを作成することができます。ここでも、バイトを変更するためのメソッドを保持することができます。

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; }
}

また、実際にプリミティブが必要かどうか、またはフラグのセットを格納するために、またはのbyteようなものを使用できるかどうかを確認してください。BitSetEnumSet

于 2012-04-21T21:26:32.260 に答える
1

バイトは有限クラスであるため、それを行うことはできません。

(たとえば)できることは、新しいByteクラス(つまり、Byte2)に継承を使用させ、Byte2にbitTestを実装することです。

これは次のようになります:

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

    }
}

そして、すべての「バイト」をByte2で宣言します。

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

于 2012-04-21T21:07:33.923 に答える