这个简单的例子演示了这个问题:
public class Main {
interface Person {
default int amountOfHands() {
return 2;
}
}
public static class BasicPerson implements Person {
int numberOfFaces() {
return 1;
}
}
public static void main(String[] args) {
System.out.println("Put a breakpoint here");
}
}
我在IntelliJ IDEA中以调试模式运行了此代码,并将两个手表放入了main方法中:
new BasicPerson().amountOfHands();
new BasicPerson().numberOfFaces();
这两个方法都应返回原始int,但是当第一个watch(默认接口方法)显示装箱的Integer对象时,只有第二个watch(类方法)显示原始int。
这是为什么?那是个错误吗?
最佳答案
我想这是IntelliJ IDEA中的错误。在Eclipse中,两个表达式都按预期被求值为原始值。