编译器具有与OCAJP准备书不同的输出重载方法

时间:2014-07-28 15:58:55

标签: java eclipse overloading

我正在准备从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 ...”。

请帮我验证哪个是正确的答案。谢谢!

2 个答案:

答案 0 :(得分:1)

您看到的输出是正确的行为。在编译时解析重载的方法以获得最佳的数据类型兼容性。检查为其编写本书的jdk版本。

答案 1 :(得分:0)

是的,当然你的输出是正确的:) 但我昨天做了同样的测试,在测试的第一行我有var args:

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

而不是

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

因此,在第一行使用var args的情况下,Enthuware测试的输出是正确的。