public class App {
public static void main(String[] args) {
ConTest conTest = new ConTest(null);
}
POJO:
public class ConTest {
private String a;
private Object b;
public ConTest(Object b) {
System.out.println("Object" + b);
}
public ConTest(String a) {
System.out.println("String :" + a);
}
}
当我运行这段代码时,它总是调用带有String
参数的构造函数。为什么?
null
可以传递给两个构造函数。
但是,String
参数比Object
参数(因为String
是的子类Object
)更具体,并且方法重载解析过程更喜欢具有更具体参数类型的方法(在您的情况下为构造函数)。
正如在评论中提到,如果要强制调用接受一个构造函数Object
,你可以施放null
到Object
:
ConTest conTest = new ConTest((Object)null);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句