Java类型和重复注解

本文概述

  • Java类型注释
  • Java重复注释
  • Java重复注释示例
Java类型注释Java 8在其先前的注释主题中包括重复和类型注释两个新功能。在早期的Java版本中, 你只能将注释应用于声明。在发布Java SE 8之后, 可以将注释应用于任何类型使用。这意味着注释可以在使用类型的任何地方使用。例如, 如果要避免在代码中出现NullPointerException, 则可以声明这样的字符串变量:
@NonNull String str;

以下是类型注释的示例:
@NonNull List< String>

List< @NonNull String> str

Arrays< @NonNegative Integer> sort

@Encrypted File file

@Open Connection connection

void divideInteger(int a, int b) throws @ZeroDivisor ArithmeticException

注-Java创建了类型注释, 以支持改进的Java程序分析。它支持确保更强大的类型检查的方法。Java重复注释在Java 8版本中, Java允许你在源代码中重复注释。当你想为同一类重用注释时, 这将很有帮助。你可以在任何使用标准注释的地方重复注释。
出于兼容性原因, 重复注释存储在Java编译器自动生成的容器注释中。为了使编译器执行此操作, 你的代码中需要两个声明。
  1. 声明可重复的注释类型
  2. 声明包含的注释类型
1)声明可重复的注释类型
声明可重复注释类型必须使用@Repeatable元注释进行标记。在下面的示例中, 我们定义了一个自定义@Game可重复注释类型。
@Repeatable(Games.class) @interfaceGame{ String name(); String day(); }

用括号括起来的@Repeatable元注释的值是Java编译器生成的用于存储重复注释的容器注释的类型。在下面的示例中, 包含的注释类型为Games。因此, 重复的@Game批注存储在@Games批注中。
2)声明包含的注释类型
包含注释类型的值元素必须具有数组类型。数组类型的组件类型必须是可重复注释类型。在下面的示例中, 我们声明游戏包含注释类型:
@interfaceGames{ Game[] value(); }

注意-如果将相同的注释应用于声明而不先声明为可重复, 则编译器将引发编译时错误。Java重复注释示例
// Importing required packages for repeating annotation import java.lang.annotation.Repeatable; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; // Declaring repeatable annotation type @Repeatable(Games.class) @interfaceGame{ String name(); String day(); } // Declaring container for repeatable annotation type @Retention(RetentionPolicy.RUNTIME) @interfaceGames{ Game[] value(); } // Repeating annotation @Game(name = "Cricket", day = "Sunday") @Game(name = "Hockey", day = "Friday") @Game(name = "Football", day = "Saturday") public class RepeatingAnnotationsExample { public static void main(String[] args) { // Getting annotation by type into an array Game[] game = RepeatingAnnotationsExample.class.getAnnotationsByType(Game.class); for (Gamegame2 : game) { // Iterating values System.out.println(game2.name()+" on "+game2.day()); } } }

【Java类型和重复注解】输出:
Cricket on Sunday Hockey on Friday Football on Saturday

    推荐阅读