gpt4 book ai didi

java - 具有空值的字符串构造函数

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:05:58 24 4
gpt4 key购买 nike

为什么带有空值的String(String)构造函数会导致编译时错误?我认为有 2+ 个构造函数接受 Object 并在初始化时使用。它与 null 它不知道从哪个开始。我想知道是否还有其他原因

String s = new String(null); // compile time error


StringBuffer sb = new StringBuffer(null); // no error

最佳答案

通常,当您调用可能适用多个覆盖版本的构造函数或方法时,Java 会选择最具体的构造函数或方法。 Section 15.12.2 Java 语言规范的详细解释。

假设您有两个重载方法,如下所示:

public void method(Object o) {
// ...
}

public void method(String s) {
// ...
}

当您调用method(null) 时,这两种方法都适用。 Java 选择最具体的一个,在本例中是第二种方法,它采用 String - 因为 String 是比 Object 更具体的类型>.

但是,有时无法确定最具体的构造函数或方法。如果我们看一下带有一个参数的 String 类的构造函数:

String(byte[] bytes)
String(char[] value)
String(String original)
String(StringBuffer buffer)
String(StringBuilder builder)

请注意,byte[]char[]StringStringBuffer 类型之间没有层次结构> 和 StringBuilder,因此不能说其中一个构造函数比其他构造函数更具体。因此,Java 编译器不知道选择哪个构造函数并会给您一个错误。

关于java - 具有空值的字符串构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4802474/

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