gpt4 book ai didi

java - 声明注解和类型注解的区别

转载 作者:搜寻专家 更新时间:2023-11-01 02:36:22 24 4
gpt4 key购买 nike

Java 8 引入了带有 JSR308 的类型注释。根据Java语言规范

type annotations can be used anywhere a type is used, such as declarations, generic arguments, casts etc.

我对 Java 比较陌生,Java 8 是我使用的第一个 java 版本,所以我不熟悉非“类型注释”,即声明注释。

声明注释与类型注释有何不同?我想知道,因为我一直在手册中听到它们,看起来“类型注释”是“声明注释”的超集。

最佳答案

类型注解和声明注解在 Java 中仍然存在,并且它们是不同的且不重叠的。

类型注释可以写在类型的任何使用上。它在概念上创建了一个新的、更具体的类型。也就是说,它描述了该类型代表的值。

例如,int 类型包含值 ..., -2, -1, 0, 1, 2, ...
@Positive int 类型包含值 1、2、...
因此,@Positive intint 的子类型。

声明注释可以写在任何声明(类、方法或变量)上。它描述了被声明的东西,但不描述运行时值。以下是声明注释的示例:

@Deprecated
class MyClass { ... }

说程序员不应该使用 MyClass

@Override
void myMethod() { ... }

表示 myMethod 覆盖父类(super class)或接口(interface)中的声明。

@SuppressWarnings(...)
int myField = INITIALIZATION-EXPRESSION;

表示编译器不应针对初始化表达式中的代码发出警告。

以下是同时使用声明注解和类型注解的示例:

@Override
@NonNull String myMethod() { ... }

@GuardedBy("myLock")
@Regex String myField;

请注意,类型注释描述值,声明注释说明字段的方法或用途。

作为一种风格,声明注释写在自己的行上,类型注释直接写在类型之前,在同一行。

关于java - 声明注解和类型注解的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50119062/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com