适用于特定数据类型的注释

Mub*_*bin 13 java annotations

我不知道我问的问题是不是真的很愚蠢.但这里是:

我想编写一个适用于特定类型的自定义注释.例如,如果我有一个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是一个枚举,所以你不能修改它.它不包含仅针对特定字段类型的考虑因素.

但是,您可以在运行时丢弃注释,或者引发有关它的运行时异常.


Nar*_*hai 5

这在Java中是不可能的.

但是,如果要在运行时之前检查注释的正确性,则可以选择编写自己的注释处理器.

注释处理是编译过程中的一个钩子,用于分析用户定义的注释和处理的源代码(通过产生编译器错误,编译器警告,发送源代码,字节代码......).

注释处理的基础教程.