在构造函数参数中传递null

时间:2014-05-03 22:44:12

标签: java

场景1: 如果我们在类的构造函数中传递null并且我们有一个重载的构造函数使用Object而第二个构造函数使用String作为参数

场景2: 如果我们在类的构造函数中传递null并且我们有一个重载的构造函数接受Integer而第二个构造函数有String作为参数而第三个构造函数有Object作为参数

场景3: 如果我们在类的构造函数中传递null并且我们重载了构造函数并使用Exception并且第二个构造函数具有ArithmeticException作为参数并且第三个构造函数具有Object作为参数

回答案例1 String

回答案例2编译器错误,模糊方法

回答案例3 ArithmeticException

请解释上述答案背后的逻辑

1 个答案:

答案 0 :(得分:-1)

记住它以这种方式运作。

如果编译时错误,首先搜索任何ambuguity方法。

示例define A(String) and A(Integer) then calling A(null)变得含糊不清。

所以调用时间编译时错误。

如果没有歧义,则先搜索更具体的类型,然后搜索最不具体的类型。

class A extends B

然后B将被赋予第一优先权,然后A被赋予重要性。

所以在你的场景中

案例1:

一个int和一个String方法,因此不会出现歧义和字符串1。但是如果一个是整数而不是整数,则使用null调用会产生错误。

案例2:歧义因为调用方法机智null无法在Integer和String之间选择,因为两者都不是分层类。

案例3:没有歧义,因为所有都是分层类,最具体的是算术异常类,因此选择一个。

Object->Exception->ArithmeticExcepton因此选择了算术异常