我正在准备从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 ...”。
请帮我验证哪个是正确的答案。谢谢!
答案 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测试的输出是正确的。