gpt4 book ai didi

java - 作为方法参数的 null 类型是什么?

转载 作者:搜寻专家 更新时间:2023-10-30 19:53:04 24 4
gpt4 key购买 nike

就是这个例子

public static void main(String[] args) {        
new Stuff(null);
new Stuff("a");
new Stuff(1);
}

Stuff类定义如下

public class Stuff {    
Stuff(Object o){
System.out.println("object");
}

Stuff(String s){
System.out.println("string");
}

}

输出是

string
string
object

Java 如何判断null 是一个String?如果我将 Stuff 更改为

public class Stuff {    

Stuff(String s){
System.out.println("string");
}

Stuff(Integer o){
System.out.println("Integer");
}

}

我得到 Stuff(null) 的编译错误:

The constructore Stuff(String) is ambigous. 

同样,为什么 Java“决定”null 是一个 String

最佳答案

  • 编译器首先列出所有适用的方法。在您的情况下,两者都适用。
  • 然后它会尝试找到一种比其他方法更具体的方法。
  • 在您的第一个示例中,StringObject 的子类,因此更加具体。
  • 在您的第二个示例中,两种方法都适用(String 和 Integer),但没有一个比另一个更具体(String 不是 Integer 的子类,而 Integer 不是 String 的子类)。因此存在歧义,因此出现编译器错误。

确定应选择哪种方法的完整算法在 JLS 中定义。 .

关于java - 作为方法参数的 null 类型是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21810334/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com