我不知道我问的问题是不是真的很愚蠢.但这里是:
我想编写一个适用于特定类型的自定义注释.例如,如果我有一个A类,那么我希望有一个可以应用于A的对象的注释.
像这样的东西:
@Target({ElementType.FIELD, //WHAT_ELSE_HERE_?})
public @interface MyAnnotation {
String attribute1();
}
public class X {
@MyAnnotation (attribute1="...") //SHOULDN'T BE POSSIBLE
String str;
@MyAnnotation (attribute1="..") //PERFECTLY VALID
A aObj1;
@MyAnnotation (attribute1="...") //SHOULDN'T BE POSSIBLE
B bObj1;
}
Run Code Online (Sandbox Code Playgroud)
这有可能吗?
ζ--*_*ζ-- 11
不可能.@Target使用ElementType[],并且ElementType是一个枚举,所以你不能修改它.它不包含仅针对特定字段类型的考虑因素.
但是,您可以在运行时丢弃注释,或者引发有关它的运行时异常.