【发布时间】:2014-08-03 16:25:35
【问题描述】:
我尝试了一些示例,但无法理解以下示例中出现以下代码错误的原因
public class Test {
public static void print(Integer object){
System.out.println("object");
}
public static void print(String string){
System.out.println("String");
}
public static void main(String... args){
print(null);
}
}
我收到以下错误:方法 print(Integer) 对于 Test 类型不明确
但是当我通过将 Integer 更改为 Object 来尝试相同的示例时,代码编译得很好,并且输出为 String
public class Test {
public static void print(Object object){
System.out.println("object");
}
public static void print(String string){
System.out.println("String");
}
public static void main(String... args){
print(null);
}
}
任何人都可以帮助我理解为什么当输出来自其中包含 String 的方法时,为什么需要在其签名中包含 Object 的方法。以及模棱两可的类型错误的原因是什么。
【问题讨论】:
-
String 和 Integer 不相关,String 和 Object 相关。这是 JLS 中的某个地方..
标签: java overloading overriding