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