这个简单的例子演示了这个问题:

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中,两个表达式都按预期被求值为原始值。

10-07 19:42
查看更多