如果包装器使用拆箱,那么intValue()方法需要什么?

use*_*212 6 java int unboxing wrapper

例如,看看这段代码:

Integer myInt = new Integer(5);
int i1 = myInt.intValue();
int i2 = myInt;

System.out.println(i1);
System.out.println(i2);
Run Code Online (Sandbox Code Playgroud)

如您所见,我有两种方法可以将包装器中的整数值复制到原始值:

我可以使用拆箱

要么

我可以使用方法intValue()

那么......当已经取消装箱时,有什么方法需要一个方法?

Fra*_*ank 10

Unboxing是在Java 5中引入的.自最初发布以来,包装器(包括此方法)就已存在.

Javadoc的链接

在那个时候(1996年),我们确实需要这种intValue()方法,因为Oracle保证向后向后兼容性......达到一定水平(主要版本并不总是100%).

该方法必须留在.


Del*_*ima 7

除了弗兰克给出良好历史观点的答案之外,intValue()在某些情况下仍然需要使用今天.

请注意以下陷阱,表明您不能将其Integer视为int:

 Integer i1 = new Integer(5);
 Integer i2 = new Integer(5);

 //This would be the way if they were int
 System.out.println(i1 == i2); //Returns false

 //This is the way for Integers
 System.out.println(i1.intValue()==i2.intValue()); //Returns true
 System.out.println(i1.equals(i2)); //Returns true
Run Code Online (Sandbox Code Playgroud)

返回

false
true
true
Run Code Online (Sandbox Code Playgroud)