【问题标题】:How can i use annotation to load values for a field in javajava - 如何使用注解为java中的字段加载值
【发布时间】:2013-08-21 19:01:28
【问题描述】:

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

我有一个带有字段的 java 类,字段用枚举值注释,现在我想将值从地图设置到字段,有什么建议,知道如何去做吗?

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

例如

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 应该有值 1,因为 field1 的注释与地图中条目 1 的键匹配。

可能类似于 Jaxws @XMLElement 注释字段获取从 xml/soap 加载的值的方式

有什么建议吗?

【问题讨论】:

    标签: java annotations


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢 sotirios,这就是我目前正在做的事情,只是在想是否有更好的方法。
    猜你喜欢
    • 2017-05-24
    • 1970-01-01
    • 2016-03-02
    • 1970-01-01
    • 2021-12-05
    • 2013-10-23
    • 1970-01-01
    • 1970-01-01
    • 2014-07-21
    相关资源
    最近更新 更多