用Java6/7编译的注释可以用于Java8中的类型参数吗?

用Java6/7编译的注释可以用于Java8中的类型参数吗?,java,annotations,java-8,type-annotation,Java,Annotations,Java 8,Type Annotation,没有@Target的注释的语义似乎在 如果注释类型上不存在目标元注释 声明,声明的类型可用于任何程序元素 及 如果注释类型T上不存在@Target元注释, 然后,类型为T的注释可以作为任何 声明,类型参数声明除外 (我的重点)。这导致了一个恼人的后果,即使用Java 6/7编译的任何注释都不能用于类型参数或类型使用。有没有办法绕过这个限制?JavaDocs中的规范之所以改变,正是为了确保语义没有改变。没有@Target的注释可以用于包、类/接口/枚举/注释类型声明、字段、构造函数、方法、构造函数

没有
@Target
的注释的语义似乎在

如果注释类型上不存在目标元注释 声明,声明的类型可用于任何程序元素

如果注释类型T上不存在@Target元注释, 然后,类型为T的注释可以作为任何 声明,类型参数声明除外


(我的重点)。这导致了一个恼人的后果,即使用Java 6/7编译的任何注释都不能用于类型参数或类型使用。有没有办法绕过这个限制?

JavaDocs中的规范之所以改变,正是为了确保语义没有改变。没有
@Target
的注释可以用于包、类/接口/枚举/注释类型声明、字段、构造函数、方法、构造函数和方法参数以及局部变量声明,这在Java 7和Java 8之间没有改变


在Java 8之前,注释根本不能用于类型参数声明或类型使用,因此允许在这些情况下使用未编译的注释将打破Java 8之前的现有注释类型所同意的契约。

Hmm这是有意义的,但我将缺席的
@Target
的语义解释为“允许在任何地方,甚至在未来的语言版本中”。这就是为什么JSR330的作者没有将
@Target
放在
@Named
上的原因,例如,他们希望它在添加到语言中时应用于类型使用。不管怎样,你是说我的问题的答案是“不”吗?