JEP 120:重复注释
概括
更改 Java 编程语言,以允许将相同类型的注释多次应用到单个程序元素。
目标
提高源代码的可读性,源代码在逻辑上将相同注释类型的多个实例应用到给定的程序元素。
动机
在 EE 和其他地方使用注释进行编程时经常使用的习惯用法是笨拙地使用容器注释,只是为了模拟应用多个注释的能力。建立对重复注释的支持将提高源代码的可读性。
描述
实现该语言功能的基本方法是将基类型的重复注释脱糖为单个容器注释;容器注释有一个values
方法,它返回基本注释类型的数组。要为特定注释类型启用重复注释,基本注释类型的声明将需要包含一个新的元注释,例如@ContainerAnnotation
,以声明应将哪个其他注释类型用作容器。如果容器与基本注释不适合兼容,则应发出警告和错误,包括保留策略或目标中存在问题的差异。
开放设计问题包括是否支持多个级别的编译器生成的容器。例如,应该
@A(1)
@A(2)
@AContainer
@AContainerContainer
foo();
被视为逻辑上等同于
@AContainerContainer(@AContainer({@A(1), @A2}), @AContainer)
foo();
或一级嵌套后出现编译错误
@AContainer({@A(1), @A(2)})
@AContainer
@AContainerContainer
foo();