< b >想改进这个问题?通过编辑此帖子添加详细信息并澄清问题。
我想转换:
typedef byte U8;
要像这样OO:
public final class U8 extends Byte {
U8( byte x ){
super(x);
}
};
这导致一个错误“类型U8不能子类化最终类字节”。
有没有一个简单的方法来做到这一点?
执行此操作的简单方法是重用其他人的库。本 Q 中有一些线索
你实际想要做的事情(扩展java.lang.Byte
)既是不可能的(因为Byte
类是最终
的),而且在概念上是错误的。由无符号字节和有符号字节表示的数字集是不同的。因此,在概念上,两者都不是另一个的子类型。如果将一个类建模为另一个的 Java 子类,则最终将出现类型异常和运行时值检查以避免它们。
最后,虽然这种建模为您提供了一个不错的OO程序,但缺点是相对于使用基元类型和“调整”来处理有符号与无签名,您将受到显着的性能影响。您可能有兴趣知道 Java 8 中有一个新的 API,用于对有符号基元类型执行未签名操作。
API由现有包装类中的新静态
方法组成。