【发布时间】:2018-02-06 15:51:09
【问题描述】:
我正在尝试确定 Java 使用的拆箱方法是否可以修改。这样做的目的是为了能够做到:
class IInteger extends Integer {
@Override
public int unboxToPrimitive(){
return ++val;
}
}
IInteger i = 10;
System.out.print(i); // 11
也就是说,重载方法并让它返回 ++val 而不是 val。
【问题讨论】:
-
无法扩展像
Integer这样的最终类 - stackoverflow.com/questions/5181578/use-of-final-class-in-java -
我会对您尝试使用此覆盖解决的问题感兴趣吗?
-
@lwi 试图解决
return i<=1 && i>=1 && i!=1等于真问题 -
@userunknown 即使您将
Integer类更改为非最终类型,您仍然无法装箱为自定义类型,因为the language only defines boxing between specific types。 -
@lwi 这是他们在面试时有时会问的那些脑筋急转弯之一。例如,在 javascript 中,可以通过重载 valueOf 方法以返回 ++x 来完成,这样每次评估它时,它都会返回一个不同的值,从而能够使表达式返回 true。它在实际编程中没有用处。
标签: java integer overloading wrapper