鉴于这些婴儿课程
public class Domain<V> {
public Domain(V v) {} // (1)
public Domain() {} // (2)
}
和
public class User {}
还有一个客户
public class App {
public static void main( String[] args )
{
Domain<User> d1 = new Domain<>(new User());
Domain<User> d2 = new Domain<>(null);
}
}
它会命中哪个构造函数,(1)还是(2)?
曲名:It One
这背后有什么故事?这意味着,null
实际上什么都不是,仍然是一个参数还是什么?
1条答案
按热度按时间jm81lzqq1#
为了让它更直观,试着这样看:
不管
user
是否为null(假设我们不知道它),对于Java来说,它总是意味着运行构造函数(1),因为null
仍然是一个值,即使它在语义上意味着“无”。你可以把它想象成把一个整数0
传递给某个函数。此外,你的构造函数可能有这样的逻辑:
如果Java运行第二个构造函数,您将无法使用这样的逻辑。