我需要一些帮助来理解这个概念。请参考以下示例以及代码如何显示不同的输出?
场景-1:如果我使用public Confusing(Object o){
此方法签名然后输出是对象,但如果我使用public Confusing(StringBuffer sb){
字符串缓冲区输出正在打印?
public class Confusing {
public Confusing(Object o){
System.out.println("Object");
}
public Confusing(StringBuffer sb){
System.out.println("String Buffer");
}
public static void main(String[] args) {
new Confusing(null);
}
}
场景-2:如果我使用了public Confusing(Object o){
这个方法签名然后输出是对象,但是如果我使用public Confusing(double[] dArray){
那么为什么输出是Double Array?
public class Confusing {
public Confusing(Object o){
System.out.println("Object");
}
public Confusing(double[] dArray){
System.out.println("Double Array");
}
public static void main(String[] args) {
new Confusing(null);
}
}
场景-3 如果我使用以下代码,那么为什么我会收到以下错误? 我们如何解决此错误?
The constructor Confusing(Object) is ambiguous
public class Confusing {
public Confusing(Object o){
System.out.println("Object");
}
/*public Confusing(double[] dArray){
System.out.println("Double Array");
}*/
public Confusing(String s){
System.out.println("String");
}
public Confusing(StringBuffer sb){
System.out.println("String Buffer");
}
public static void main(String[] args) {
new Confusing(null);
}
}
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
The constructor Confusing(Object) is ambiguous
请帮助我理解这个概念。