我可以让一个Java数字子类自动装箱和取消装箱吗?

我可以让一个Java数字子类自动装箱和取消装箱吗?,java,Java,我正在为Java创建一些表示无符号数字的类,并从数字中派生它们。我的目标之一是使它们成为装箱和取消装箱的原始值,但我无法实现这一点,也找不到任何关于如何在其他地方实现这一点的讨论 可以这样做吗?如果可以,怎么做 这是我不工作的代码 public class Unsigned8 extends Number implements Comparable<Unsigned8>{ public static final long MAX_VALUE = 256L; public stati

我正在为Java创建一些表示无符号数字的类,并从数字中派生它们。我的目标之一是使它们成为装箱和取消装箱的原始值,但我无法实现这一点,也找不到任何关于如何在其他地方实现这一点的讨论

可以这样做吗?如果可以,怎么做

这是我不工作的代码

public class Unsigned8 extends Number implements Comparable<Unsigned8>{

public static final long MAX_VALUE = 256L;
public static final long MIN_VALUE = 0;
private long _Value;


public Unsigned8(long value)
{
    this._Value = value;
}

@Override
public byte byteValue() {
    return (byte) _Value;
}

@Override
public short shortValue() {
    return (short) _Value;
}

@Override
public int intValue() {
    return (int) _Value;
}

@Override
public long longValue() {
    return (long) _Value;
}

@Override
public double doubleValue() {
    return _Value;
}

@Override
public float floatValue() {
    return _Value;
}

@Override
public int compareTo(Unsigned8 target) {
    return (int) (_Value - target._Value);
}
public类Unsigned8扩展数字{
公共静态最终长最大值=256L;
公共静态最终长最小值=0;
私人长期价值;
公共未签名8(长值)
{
此值为._值=值;
}
@凌驾
公共字节字节值(){
返回(字节)_值;
}
@凌驾
公开短期价值(){
返回(短)_值;
}
@凌驾
公共int值(){
返回(int)_值;
}
@凌驾
公共长期价值(){
返回(长)_值;
}
@凌驾
公共双双值(){
返回_值;
}
@凌驾
公共浮动价值(){
返回_值;
}
@凌驾
公共整数比较(未签名的8目标){
返回值(int)(_值-目标值);
}

}你不能。我要做的是为
short
int
long
使用一个helper类,这样您就不会产生支持
无符号类型的包装器开销。有关示例,请参见链接。

否。您将获得原语与其包装器之间的关系,如下所示:

Primitive type Wrapper class boolean Boolean byte Byte char Character float Float int Integer long Long short Short 基元类型包装类 布尔布尔 字节 字符 浮子 整数 长长的 短小
它们仅限于这些类型。文档

代码在哪里?当然,您应该能够这样做。您需要更改您的比较器,使其返回-1、0或+1。+1,特别是将未签名的类置于“BEER-WARE许可证”下。以前不知道此许可证。:)仅供参考,除了基本的包装类实现之外,Guava还提供了
com.google.common.primitives
下的实用程序。但是,无法将这些转换到autobox。当涉及到
装箱转换时,还有另一个从
null
null类型的转换。(JLS 5.1.7),但对于
取消装箱转换
。但这是吹毛求疵,所以+1:)