我有以下2种方法中的一类过载:方法重载和传递null
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
其打印“字符串”的方法。
当我增加一个重载的方法:
public void testMethod(StringBuilder sb){
System.out.println("String");
}
它抛出我的编译器错误:The method testMethod is ambigous for type Test
..
这一切时,我调用方法与null
恰好我的问题是:
- 为什么它打印字符串,而不是对象?
- 为什么在添加第三种方法时出现编译错误?
除了你的具体问题,我建议你避免使用Object parm和其他具有某种特定数据类型的签名。把它作为一个整体来说可能是件好事,但它们通常是潜伏着的陷阱。 – 2014-12-02 14:17:56