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参数更具体(因为StringObject的子类),并且方法重载解析过程更喜欢使用方法(或您的情况下的构造函数)。更具体的参数类型。

如注释中所述,如果要强制调用接受Object的构造函数,可以将null强制转换为Object

ConTest conTest = new ConTest((Object)null);

关于java - 字符串与对象类型构造函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36054663/

10-11 15:02