我正在查看Oracle 文档中的注释主题。看看这个例子:
@ClassPreamble (
author = "John Doe",
date = "3/17/2002",
currentRevision = 6,
lastModified = "4/12/2004",
lastModifiedBy = "Jane Doe",
// Note array notation
reviewers = {"Alice", "Bob", "Cindy"}
)
public class Generation3List extends Generation2List {
// class code goes here
}
我仍然不明白它能为我做什么。例如,如果我删除注释它仍然有效;那么它们一般是用来做什么的呢?他们向我解释说它们用于接口,但直到那时我才明白。
有趣的问题,我想贡献我的一粒沙子。
什么是@notations?
注释是一种元数据形式,它提供不属于程序本身的程序的数据。注释对其注释的代码的行为没有直接影响。
注释有很多用途,包括:
注释基础
注释的格式
在最简单的形式中,注解如下所示:
符号字符 (
@
) 向编译器表明后面是注解。在以下示例中,注释名称为Override
:注释可以包含元素,可以命名也可以不命名,并且这些元素都有值:
如果只有一个名为 value 的元素,则可以省略名称,如下所示:
如果注解没有元素,括号可以省略,如
@Override
.也可以在同一个声明中使用多个注解:
如果注解具有相同的类型,则称为重复注解:
从 Java SE 8 开始支持重复注释。有关更多信息,请参阅重复注释。
注释类型可以是在Java SE API
java.lang
或包中定义的类型之一。java.lang.annotation
在上面的示例中,Override
和SuppressWarnings
是预定义的 Java 注释。也可以定义自己的注释类型。Author
上例中的和注解Ebook
是自定义注解类型。我可以在哪里使用注释?
注释可以应用于声明:类、字段、方法和其他程序元素的声明。在声明中使用时,按照惯例,每个注释通常出现在自己的行上。
从 Java SE 8 版本开始,注解也可以应用于类型的使用。这里有些例子:
类实例创建表达式:
new @Interned MyObject();
发行类型:
MyString = (cadena @NonNull) str;
条款
implements
:class UnmodifiableList<T> implements @Readonly List<@Readonly T> { ... }
抛出异常语句:
void monitorTemperature() throws @Critical TemperatureException { ... }
这种形式的注解称为类型注解。有关更多信息,请参阅类型注释和可插入类型系统。
声明注解类型
许多注释替换了代码中的注释。
假设一个软件组传统上以提供重要信息的注释开始每个类的主体:
要使用注释添加相同的元数据,您必须首先定义注释类型。执行此操作的语法是:
注释类型定义类似于接口定义,关键字 interface 前面是 at 符号 (@)(@ = AT,如注释类型中一样)。注释类型是一种接口形式,将在后面的课程中介绍。目前,没有必要了解接口。
上面注解定义的主体包含注解类型元素声明,看起来很像方法。请注意,它们可以定义可选的默认值。
一旦定义了注解类型,您就可以使用该类型的注解,并填写值,如下所示:
注意:要使
@ClassPreamble
Javadoc 生成的文档中出现的信息,您必须使用注解来注解 的@ClassPreamble
定义@Documented
:还有更多
如果你想攻读 @notations 的博士学位,我会留下这些完成 Java 文档教程的链接:
在我阅读了这个非常简单且解释清楚的 MEDIUM 出版物https://medium.com/@alvareztech/java-annotations-b8ae69739b4e之前,我也对注释有疑问。希望对你有帮助。
我举一个广泛使用的注解的例子,@override 告诉编译器重写父类的方法,当然这是有类继承的时候。