7

jre 在 rt.jar 中附带了许多库,其中之一是 com.sun.istack.internal*。我需要 com.sun.istack.internal.Nullable 的文档(我发现谷歌在其 CacheBuilder 中使用了它),首先我想去 docs.oracle.com 找到它的文档,但我什么也没找到. 接下来转到使用 jdk 获取的源文件夹,我没有在所述文件夹中找到 com 名称实体。接下来我看一下 jre7 版本并查看所有包和类,发现那里没有提到 Nullable。虽然 SO 有一次提到它,但没有什么具体的。如果需要,我仍然很困惑从哪里获得它的文档和 src。我什至在 oracle 上查看了遗留的 sun api 文档,但没有提及它。oracle 在哪里记录了关于移植包的政策以及它们是标准的还是非标准的。他们一定已经在某个地方记录了它,只是我花了太多时间才到达那里。

请指点我那里。

编辑:实际上 javax.annotation.Nullable 正在谷歌 CacheBuilder 中使用,而不是 com.sun.istack.internal.Nullable。同样对于可能面临这个问题的人:javax.annotation.Nullable 目前还不是 Java SE 的一部分,它正在被移植到 jsr305 jar 中。因此,如果您打算使用 CacheBuilder 或只是浏览其代码,请在您的类路径中添加 jsr305 jar,否则 eclipse 会混淆并在您将光标悬停在 Nullable 上时将您指向 com.sun.istack.intenal.Nullable .

4

2 回答 2

12

番石榴不使用com.sun.istack.internal.Nullable. 官方 Java SE javadoc 中未记录的所有内容都是内部代码,不应在应用程序中使用。

您可能正在寻找javax.annotation.Nullable,它是JSR305的一部分。

于 2012-05-20T13:48:06.580 回答
5

这是源代码的链接:

(此链接将来可能会中断,但您应该能够使用 Google 搜索找到等效链接。)

在标准 JDK/JRE 发行版中找不到源代码或 javadocs 的原因是这是一个 INTERNAL 类。长期以来,Oracle / Sun 的政策是不鼓励开发人员编写依赖于 Java 内部类的代码。

FWIW - 这只是一个注释,其含义几乎就是类名所暗示的。


更新- 显然,造成这种混乱的真正原因是您没有在构建路径中包含 JSR305 jar。它是CacheBuilder. 然后 Eclipse 类名完成正在尽其所能......但失败了。

于 2012-05-20T13:47:12.390 回答