首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java 8,类型注释和JSR 308

Java 8,类型注释和JSR 308
EN

Stack Overflow用户
提问于 2013-11-25 15:56:54
回答 2查看 5.9K关注 0票数 13

我已经安装了上一个JDK 8 (b116),但是我注意到我不能使用类型注释。例如,如果我编写以下内容,请阅读Java教程:

代码语言:javascript
复制
String str = null;
String myString = (@NonNull String) str;

代码语言:javascript
复制
TEST st = new @Interned TEST();

编译器给出了以下错误:

代码语言:javascript
复制
annotation type not applicable to this kind of declaration

现在起作用了。在使用类型注释之前,我们必须使用@Target(ElementType.TYPE_USE)**.注释看下面的评论!**

我也不明白诸如:NonNullInterned等注释是否会插入到JDK中,还是必须下载检查框架

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-11-26 10:32:44

你自己已经回答了问题的第一部分。

第二部分:

我也不明白诸如:NonNullInterned等注释是否会插入到JDK中,或者我们是否需要下载Checker。

注释只是一种Java类/接口。它们必须在源代码中定义并编译。

理想情况下,您应该获得从规范位置获得的最终源代码和/或字节码文件。但是,如果要复制注释源代码的显著部分(包名、注释名、字段名和类型)并编译它,那么JVM的其他部分就不会更明智了。

但是,当您谈到特定的注释(如@NonNull@Interned )时,您需要意识到在不同的包中可能存在这些注释的多个版本。这可能会导致问题(对于注释处理软件),直到标准/事实上的标准版本出现。我不知道车臣框架是否可以被称为事实上的标准..。目前还没有。

您询问了检查器注释是否会添加到Java 8库中。我个人对此表示怀疑,因为这些注释的包名是不可接受的。但等着瞧..。

票数 9
EN

Stack Overflow用户

发布于 2014-09-30 12:56:15

第二部分:

我也不明白诸如: NonNull、Interned等注释是否会插入到JDK中,或者我们是否需要下载Checker。

Oracle分发的JDK不包含@NonNull和@Interned这样的注释--既不包含它们的定义,也不包含它们在JDK方法上出现的情况。

但是,Checker包含有注释的JDK版本,正如检查框架手册所解释的那样。Checker允许您在运行时甚至在编译时使用库的最终版本,而可插入类型检查则可以看到注释,因此类型检查结果更加精确。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20197440

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档