📜  Java8 repeating and type annotations(1)

📅  最后修改于: 2023-12-03 15:01:35.726000             🧑  作者: Mango

Java8 - Repeating and Type Annotations

自从Java 5引入注释以来,注释一直是Java语言中非常有用的元素。在Java 8中,注释得到了加强,包括重复注释和类型注释。

重复注释

重复注释是一个允许您重复使用同一个注释类型的方法。以前,Java中的注释类型是不允许重复的。但是在Java 8中,重复注释是允许的。

以下是一个使用重复注释的例子。假设我们要在一个类中使用多个@Author注释:

public class MyClass {
    
    @Author(name = "John")
    @Author(name = "Emily")
    public void doSomething(){}
    
}

@Author注释通过@Repeatable注释进行标记,以告诉编译器它是可重复的注释类型。接下来,我们看看@Author注解的定义:

import java.lang.annotation.*;

@Repeatable(Authors.class)
public @interface Author {
    String name();
}

@Retention(RetentionPolicy.RUNTIME)
@interface Authors {
    Author[] value();
}

注解可以使用@Repeatable注释进行标记。@Author注解实际上是通过一个包装注解@Authors实现可重复的。通过这种方式,我们可以在同一个元素上使用多个@Author注解。

类型注释

Java 8引入了新的元素,称为类型注释。它们是特殊的注释,可以直接附加到类型使用处。这样,我们就可以在Java程序中提供更多的语义信息。

以下是:在声明变量时使用类型注释的示例:

List<@NotNull String> list = new ArrayList<>();

在这个例子中,我们使用@NotNull注释来说明变量list可能不包含空值(null)。

类型注释可以作为任何类型使用。 我们可以将它们放在通用声明,使用声明或弃用声明中。 以下是一个示例:

public class MyClass<@NotNull T> {
    public void myMethod() throws @CriticalException Exception {
        // Method Code Here
    }
    public void myDeprecatedMethod() throws @Deprecated @BadPracticeException Exception {
        // Method Code Here
    }
}
结论

Java8中的重复注释和类型注释是非常有用的功能。重复注释可以让我们重复使用同一类型的注释,而类型注释使我们可以在声明处添加语义信息。这些新元素为我们提供了更丰富的元数据,并可以更好地支持静态分析工具和框架。