为什么我在String源代码中看到构造函数,但在JavaDocs中却没有?

时间:2012-01-22 03:54:42

标签: java string constructor

我试图更熟悉使用JavaDocs。我正在查看String函数,我认为String非常有趣,它实际上只是一个私有引用变量中保存的字符数组。

当我查看String的源代码时,它显示了一个构造函数,如下所示:

String(int offset, int count, char value[]) {
    this.value = value;
    this.offset = offset;
    this.count = count;
}

然后我继续查看String JavaDoc,它没有显示具有该类型签名的构造函数..什么给出了?

5 个答案:

答案 0 :(得分:7)

正如Oli在上面的评论中提到的那样,构造函数不是公开的。至少在OpenJDK中,代码显示为注释:

// Package private constructor which shares value array for speed.
String(int offset, int count, char value[]) {

另外需要注意的是,如果你真的想要那个构造函数,那么有一个几乎相同,但顺序不同:

String(char[] value, int offset, int count)

答案 1 :(得分:3)

根据some random version of the Java documentationString没有公开的构造函数,它具有您发布的签名。因此,这似乎是一个实现内部(私有)构造函数,您不应该直接使用它,因此它没有记录。

标准库通常使用内部帮助函数,将许多类似和相关的公共接口函数压缩为少量的实际工作函数。

答案 2 :(得分:3)

源代码中的构造函数正上方有一条注释:

// Package private constructor which shares value array for speed.
String(int offset, int count, char value[]) {
    this.value = value;
    this.offset = offset;
    this.count = count;
}

这解释了为什么这个非公共构造函数的文档没有包含在公共文档中。

答案 3 :(得分:3)

来自消息来源:

  

644 //打包私有构造函数,它为速度共享值数组。

非公开方法通常不是javadoc的一部分,因为它不是你可以依赖的东西(或者在这种情况下使用,因为你不是在java.lang中而且它是' s包私有)。

答案 4 :(得分:2)

// Package private constructor which shares value array for speed.
String(int offset, int count, char value[])

这样我们就无法从类的外侧创建对象,这样它就可以为String类提供安全性。这个构造函数是以单例形式实现的。