使用注释初始化变量

时间:2016-04-21 19:44:45

标签: java annotations

我想创建自己的注释来初始化一个类字段。我需要这样的东西:

public class MyAnnotationClass{
    Map<String,String> myMap;

    public String getValue(String key) {
        return myMap.get(key);
    }
}

@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {
    String[] keys default {};
    String[] vlaues default {};
}

public class MyClass implements MyInterface {
    @MyAnnotation(keys={"a","b"},values={"A","B"})
    MyAnnotationClass myAnnotationClass;

    public MyAnnotationClass getMyAnnotationClass() {
        return this.myAnnotationClass;
    }
}

我不知道如何初始化变量,或者我错过了什么。

谢谢!

编辑: 我有点复杂。我需要以这种方式初始化它。

我也在使用Play框架

1 个答案:

答案 0 :(得分:0)

我们需要更多信息才能更好地为您提供帮助。

一般来说,可以在编译期间从源代码或编译类处理注释,也可以在运行时处理注释。见RetentionPolicy

如果您需要在编译过程中初始化它们,那么您需要执行以下任一操作:

  1. 解析源代码,重写变量,然后编译类。
  2. 如果你想修改.class文件,那么你需要一个像ObjectWeb的javaassist或ASM这样的库。
  3. 在这两种情况下,您都需要编写注释处理器。

    在运行时,您可以使用反射初始化它们。这可能是最简单的方法。