场景1:
如果我们在类的构造函数中传递null
并且我们有一个重载的构造函数使用Object
而第二个构造函数使用String
作为参数
场景2:
如果我们在类的构造函数中传递null
并且我们有一个重载的构造函数接受Integer
而第二个构造函数有String
作为参数而第三个构造函数有Object
作为参数
场景3:
如果我们在类的构造函数中传递null
并且我们重载了构造函数并使用Exception
并且第二个构造函数具有ArithmeticException
作为参数并且第三个构造函数具有Object
作为参数
回答案例1 String
回答案例2编译器错误,模糊方法
回答案例3 ArithmeticException
请解释上述答案背后的逻辑
答案 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
因此选择了算术异常