1

我总是在 Android 中创建不同的类,例如调用不同的活动,但现在我想创建一个类来测试一个字节。我创建了一个简单的方法来做到这一点,所以我可以这样做:

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,或者您是否可以使用类似BitSet甚至EnumSet存储您的标志集的东西。

于 2012-04-21T21:26:32.260 回答
1

由于 Byte 是一个有限的类,你不能这样做。

您可以做的(例如)是使一个新的 Byte 类(即:Byte2)使用继承并在 Byte2 中实现 bitTest。

它会是这样的:

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

    }
}

并用 Byte2 声明所有“字节”。

编辑:见评论。

于 2012-04-21T21:07:33.923 回答