我安装了最后一个JDK 8(b116),但我注意到我不能使用类型注释。
例如,如果我写的话,阅读Java教程:
String str = null;
String myString = (@NonNull String) str;
要么
TEST st = new @Interned TEST();
编译器给我以下错误:
annotation type not applicable to this kind of declaration
现在它有效。在使用类型注释之前,我们必须注释注释
同 @Target(ElementType.TYPE_USE)
。看看下面的评论!
我也不明白是否注释如下: NonNull
, Interned
等等
插入JDK或者我们必须下载 检查框架
您已自己回答了问题的第一部分。
第二部分:
我也不明白是否注释如下: NonNull
, Interned
等等将插入JDK或者我们必须下载Checker Framework。
注释只是一种Java类/接口。它们必须在源代码中定义并编译。
理想情况下你应该 明确 源代码和/或字节码文件,从规范的地方获得。但是,如果要重现注释的源代码(包名称,注释名称,字段名称和类型)的显着部分并对其进行编译,那么JVM的其余部分将更加明智。
但是当你谈论特定的注释时 @NonNull
和 @Interned
,你需要意识到在不同的包中可能存在多个版本。这可能会导致问题(对于注释处理软件),直到出现标准/事实标准版本。我不知道Checkers Framework是否可以被称为事实标准......
您询问是否将检查器注释添加到Java 8库中。我个人对此表示怀疑,因为这些注释的包名称是不可接受的。但是拭目以待......
第二部分:
我也不明白是否注释如下:NonNull,Interned,
将插入JDK或者我们必须下载Checker
框架。
Oracle分布式JDK不包含@NonNull和@Interned等注释 - 既不定义它们,也不会在JDK方法上出现它们。
但是,Checker Framework包含JDK的注释版本,如中所述 Checker Framework手册。 Checker Framework允许您在运行时甚至在编译时使用库的最终版本,而可插入类型检查可以查看注释,因此类型检查结果更加精确。