我想转换:
typedef byte U8;
像这样对OO:
public final class U8 extends Byte {
U8( byte x ){
super(x);
}
};
这会导致错误“类型U8不能继承最终类字节”。
有一种简单的方法吗?
答案 0 :(得分:2)
这样做的简单方法是重用其他人的库。这个Q& A中有一些线索:
您实际上要做的事情(扩展java.lang.Byte
)是不可能的(因为Byte
类是final
)并且在概念上是错误的。由无符号字节和有符号字节表示的数字集是不同的。因此,概念上它们都不是另一个的子类型。如果将一个模型作为另一个的Java子类,则最终会出现类型异常和运行时值检查以避免它们。
最后,虽然这种建模为您提供了一个很好的OO程序,但缺点是相对于使用原始类型而言,您将获得显着的性能提升,并且"调整"处理签名与非签名。您可能有兴趣知道Java 8中有一个新的API用于对带符号的基元类型执行无符号运算。
API由现有包装类中的新static
方法组成。