【发布时间】:2014-12-02 14:12:59
【问题描述】:
我在一个类中重载了以下 2 个方法:
public class Test{
public static void main(String []args) throws ParseException{
Test t = new Test();
t.testMethod(null);
}
public void testMethod(Object o){
System.out.println("Object");
}
public void testMethod(String s){
System.out.println("String");
}
}
当我调用 testMethod 方法时,它会打印“String”。
当我再添加一个重载方法时:
public void testMethod(StringBuilder sb){
System.out.println("String");
}
它抛出编译器错误:The method testMethod is ambigous for type Test..
当我使用 null 调用该方法时,这一切都会发生
我的问题是:
- 为什么它打印字符串而不是对象?
- 为什么添加第三种方法会出现编译错误?
【问题讨论】:
-
除了您的具体问题外,我建议您避免使用 Object parm 的一个签名和具有某些特定数据类型的其他签名。将它作为一个包罗万象可能会很好,但它们通常是潜伏的陷阱。
标签: java null overloading