sag*_*aga 6 java annotations jls type-annotation
Java 8 通过 JSR308 引入了类型注释。根据Java语言规范
类型注释可以用在任何使用类型的地方,例如声明、泛型参数、强制转换等。
我对Java比较陌生,Java 8是我使用的第一个java版本,所以我不熟悉非“类型注释”,即声明注释。
声明注释与类型注释有何不同?我想知道,因为我不断在手册中听到它们,并且看起来“类型注释”是“声明注释”的超集。
类型注释和声明注释在Java中仍然存在,并且它们是不同的且不重叠的。
类型注释可以写在类型的任何使用上。它从概念上创建了一种新的、更具体的类型。也就是说,它描述了该类型代表什么值。
例如,该int类型包含值 ..., -2, -1, 0, 1, 2, ...
该@Positive int类型包含值 1, 2, ...
因此,@Positive int是 的子类型int。
声明注释可以写在任何声明(类、方法或变量)上。它描述了所声明的事物,但不描述运行时值。以下是声明注释的示例:
@Deprecated
class MyClass { ... }
Run Code Online (Sandbox Code Playgroud)
说程序员不应该使用MyClass.
@Override
void myMethod() { ... }
Run Code Online (Sandbox Code Playgroud)
表示myMethod覆盖超类或接口中的声明。
@SuppressWarnings(...)
int myField = INITIALIZATION-EXPRESSION;
Run Code Online (Sandbox Code Playgroud)
表示编译器不应发出有关初始化表达式中的代码的警告。
以下是同时使用声明注释和类型注释的示例:
@Override
@NonNull String myMethod() { ... }
@GuardedBy("myLock")
@Regex String myField;
Run Code Online (Sandbox Code Playgroud)
请注意,类型注释描述了值,声明注释说明了有关字段的方法或使用的信息。
从风格上来说,声明注释写在自己的行上,类型注释直接写在类型之前,在同一行上。
| 归档时间: |
|
| 查看次数: |
1972 次 |
| 最近记录: |