通过扩展Byte将typedef字节U8转换为面向对象的Java类

时间:2016-05-02 04:26:00

标签: java

我想转换:

typedef byte   U8;
像这样对OO:

public final class U8 extends Byte    { 
      U8( byte x  ){
          super(x); 
      } 
}; 

这会导致错误“类型U8不能继承最终类字节”。

有一种简单的方法吗?

1 个答案:

答案 0 :(得分:2)

这样做的简单方法是重用其他人的库。这个Q& A中有一些线索:

您实际上要做的事情(扩展java.lang.Byte)是不可能的(因为Byte类是final)并且在概念上是错误的。由无符号字节和有符号字节表示的数字集是不同的。因此,概念上它们都不是另一个的子类型。如果将一个模型作为另一个的Java子类,则最终会出现类型异常和运行时值检查以避免它们。

最后,虽然这种建模为您提供了一个很好的OO程序,但缺点是相对于使用原始类型而言,您将获得显着的性能提升,并且"调整"处理签名与非签名。您可能有兴趣知道Java 8中有一个新的API用于对带符号的基元类型执行无符号运算。

API由现有包装类中的新static方法组成。