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

时间:2013-09-06 09:58:27

标签: 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;
}

这可能吗?

2 个答案:

答案 0 :(得分:11)

不可能。 @Target使用ElementType[],而ElementType是枚举,因此您无法对其进行修改。它不包含仅考虑特定字段类型的内容。

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

答案 1 :(得分:5)

在Java中不可能

但如果要在运行时检查注释的正确性,您可以选择编写自己的annotation processor

  

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

A basic tutorial on Annotation Processing