我正在从一本Enthuware问题书为OCA Java SE 7做准备,当我在运行Java 1.7编译器的Eclipse中进行编译时,会得到不同的输出:

public class TestClass {
    void probe(int x) { System.out.println("In ...");} //1

    void probe(Integer x) { System.out.println("In Integer");} //2

    void probe(long x) { System.out.println("In long");} //3

    void probe(Long x) { System.out.println("In LONG");} //4

    public static void main(String[] args){
        Integer a = 4; new TestClass().probe(a); //5
        int b = 4; new TestClass().probe(b); //6
    }
}


书籍输出为:
“长整数”

Eclipse中的输出显示“ In Integer and In ...”。

请帮助我确认哪个是正确的答案。谢谢!

最佳答案

您看到的输出是正确的行为。重载的方法将在编译时解决,以实现最佳的数据类型兼容性。检查与为其编写书籍的jdk版本。

08-16 18:43