package com.company;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.util.List;
public class Main {
@Target(ElementType.TYPE_USE)
@Retention(RetentionPolicy.RUNTIME)
public @interface A {}
public static void main(String[] args) {
}
private List<@A Integer> integers1;
private List<@A java.lang.Integer> integers2;
}
上 私人名单&lt; @A java.lang.Integer&gt; integers2; 得到一个错误: 错误:(20,21)java:找不到符号 符号:类java location:class com.company.Main
是程序中的错误吗?
答案 0 :(得分:4)
这显然是正常行为(9.7.4):
如果满足以下两个条件,则允许使用类型注释:
注释最接近的简单名称被归类为
TypeName
,而不是PackageName
。如果注释最接近的简单名称后跟“。”另一个
< / LI>TypeName
- 也就是说,注释显示为@Foo T.U
- 然后U
表示内部类T
。
换句话说,@A
最接近(java
)的简单名称是 PackageName
,因此注释不可接受,并且会发生编译错误。
限定名称上类型注释的正确语法是java.lang.@A Integer
。