【问题标题】:rt.jar com.sun.istack.internal packagesrt.jar com.sun.istack.internal 包
【发布时间】:2012-05-20 13:35:49
【问题描述】:

jre 在 rt.jar 中带有许多库,其中之一是 com.sun.istack.internal*。我需要 com.sun.istack.internal.Nullable(我发现谷歌在其 CacheBuilder 中使用它) 的文档,首先我想去 docs.oracle.com 查找它的文档在那里我一无所获。接下来转到使用 jdk 获取的源文件夹,我没有在所述文件夹中找到 com 名称实体。接下来我看看 jre7 版本,看看所有的包和类,发现那里没有提到 Nullable。虽然 SO 有一个 mention of it,但没有什么具体的。如果需要,我仍然很困惑从哪里获得它的文档和 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 .

【问题讨论】:

  • 我相信它只是一个标记界面。源文件中唯一的注释就是这么说的。
  • 其实是个注解——public @interface Nullable

标签: java sun


【解决方案1】:

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

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

【讨论】:

  • @Override public boolean equals(@Nullable Object obj) { if (this == obj) { return true;来自com.google.common.base.Equivalence和Equivalence的一个sn-p就是对这个注解的充分利用。
  • docs.guava-libraries.googlecode.com/git-history/v12.0/javadoc/…: javax.annotation.Nullable,就像我告诉你的那样。
  • 好吧,javax.annotation.Nullable 似乎不是由 JSE 提供的,但是在 JSR305 中,eclipse 非常混乱(将光标悬停在 Nullable 上,它会将您指向 com.sun。 istack.internal.Nullable),因为我没有 jsr305。由于无法解析 javax.annotaion.Nullable,因此将 Nullable 与 com.sun.istack.internal.Nullable 混淆。
【解决方案2】:

这里是源代码的链接:

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

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

FWIW - 这只是一个注解,其含义与类名所暗示的差不多。


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

【讨论】:

  • 是川口康介写的!他是从什么时候开始为 JDK 编写代码的?
  • 在 Sun 被 Oracle 收购之前,他曾在 Sun 工作。他为什么不为 JDK 编写代码? Hudson Jenkins 是在业余时间写的,AFAIK。
  • 谢谢,我知道是注释。即便如此,我们也希望拥有它的文档。请参阅 JB Nizet Post 的评论。
  • @mawia - “即便如此,我们也希望拥有它的文档。” - 现在你可以拥有它了。只需按照我的答案中的链接。如果缺少已发布的 javadoc 让您烦恼,请向 Google 投诉。他们决定使用内部注释,而不是定义或重用具有该语义的非内部注释。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-06
  • 2010-12-03
  • 2012-08-20
  • 1970-01-01
  • 2020-05-21
相关资源
最近更新 更多