当前位置: 首页 > 面试题库 >

Java 8,类型注释和JSR 308

隆飞宇
2023-03-14
问题内容

我已经安装了最后一个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)。请看下面的评论!

我也不知道JDK中是否会插入诸如,等的注释NonNullInterned或者是否必须下载Checker
Framework


问题答案:

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

对于第二部分:

我也不知道JDK中是否会插入诸如,等的注释NonNullInterned或者是否必须下载Checker Framework。

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

理想情况下,您应该从规范的位置获得 确定的
源代码和/或字节码文件。但是,如果要复制注释源代码的重要部分(程序包名称,注释名称,字段名称和类型)并进行编译,则其余的JVM都不是明智的选择。

但是,当谈论诸如@NonNull和的特定注释时@Interned,您需要意识到在不同的程序包中可能存在这些注释的多个版本。在标准/事实上的标准版本出现之前,这可能会导致问题(对于注释处理软件)。我不知道是否可以将Checkers
Framework称为事实上的标准…。

您询问是否将Checkers批注添加到Java 8库中。我个人对此表示怀疑,因为这些注释的软件包名称是不可接受的。但是等等…



 类似资料:
  • 问题内容: 我正在尝试使用具有抽象基类的Python类型注释来编写一些接口。有没有一种方法来注释可能的类型和? 例如,如何表达一个函数的明智参数是一个或两个?给出,所以我的猜测是将类型注释为,但这是行不通的。 来自mypy的错误消息: Mypy不喜欢此函数调用是有道理的,因为它希望调用本身中包含a。解压后的附加内容还会产生我不理解的输入错误。 一个人如何诠释明智的类型和? 问题答案: 对于可变位置

  • Struts 2 应用程序可以使用Java5注释作为替代XML和Java属性配置。这里是清单的不同的类别有关的最重要的注解: 命名空间注释(动作注释): @ Namespace注释允许在Action类中,而不是基于零配置的约定动作的命名空间的定义。 结果注释 - (动作译注): @ Result注解允许在Action类中,而不是一个XML文件中定义的动作结果。 结果注释 - (动作译注): @ R

  • 问题内容: 我想创建自己的注释来注释一些局部变量。编写注释不是问题,问题在于在运行时获取它们的信息。我只能从带注释的方法或方法参数中获得一些信息,而不能从局部变量中获得一些信息。有什么办法吗? 我自己的注释是这样的: 或者,作为替代方法,是否有任何方法可以获取该方法的代码,对其进行进一步解析并最终获得注释值? 提前致谢。 问题答案: 通过反射,您无法检索局部变量。因此,您无法通过反射检索局部变量上

  • 主要内容:1 Java Type注解,2 Java Repeatable注解的介绍,3 Java Repeatable注解的声明,4  Java Repeatable注解的案例1 Java Type注解 Java 8在其先前的注解中包括Repeatable和Type两个新功能。在早期的Java版本中,您只能将注解应用于声明。在发布Java SE 8之后,可以将注解应用于任何类型使用。这意味着注解可以在使用类型的任何地方使用。例如,如果要避免在代码中出现NullPointerException,则

  • 我正在使用注释处理器来处理方法参数的注释。 用于参数的注释类型有一个注释@参数 现在,当注释处理器运行时,我想检查参数注释()是否有参数注释。我通过执行以下代码来实现这一点。 由于某种原因,arg始终为空。是否有注释未返回的原因?

  • 本文向大家介绍Java注释的类型。,包括了Java注释的类型。的使用技巧和注意事项,需要的朋友参考一下 Java支持单行,多行注释和文档注释。Javadoc工具可以理解文档注释,并可用于创建基于HTML的文档。 / **被称为文档注释。Javadoc工具在为程序代码创建文档时使用它。 / *用于多行注释。 //用于单行注释 示例