如何使用注释来加载java中字段的值

时间:2013-08-21 19:01:28

标签: java annotations

我有一张地图,他们的地图键是一个枚举,并且有一些值。

我有一个带有字段的java类,字段用enum值注释,现在我想设置从地图到字段的值,任何建议,想法如何去做?

我使用普通的旧反射,但有没有更好的方法来实现这一点,春天的东西或apache公共的东西等?

e.g

Map<Myenum,String> map = new HashMap<Myenum,String();
map.add(Myenum.Value1, "1");
map.add(Myenum.Value2, "2");
map.add(Myenum.Value3,"3");

我有一个类似

的java类
MyClass{

 @Use(fieldName=Myenum.Value1)
 String Field1;

 @Use(fieldName=Myenum.Value2)
 String Field2;
@Use(fieldName=Myenum.Value3)
 Object Field3;
@Use(fieldName=Myenum.Value4)
 Integer Field4;
}

我希望创建的MyClass类和字段(Field1,Field2,Field3,Field4)加载来自地图的值,其中的键与字段上的注释匹配。

例如field1应该有vaule 1,因为field1的注释与地图中条目1的键匹配。

可能类似于Jaxws @XMLElement注释字段获取从xml / soap

加载的值的方式

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

我不知道Spring是否有自定义注释的自定义拦截器/处理程序。您可以通过基本反射轻松完成此操作。

  1. 创建您的Map
  2. 获取班级的Class对象。
  3. 获取该类的声明Field
  4. 检查每个Field是否都有注释Use。如果是,请获取其fieldName属性并从Map
  5. 中检索相应的元素
  6. 使用某个版本的newInstance()创建班级实例。
  7. 使用您从Field获得的元素在该实例上设置每个找到的Map
  8. 处理类型转换,无效类型或没有相应元素的字段。