首先,我有一个这样的对象:
public class Entity {
public int data1;
public String data2;
public float data3;
public SubEntity data4;
}
public class SubEntity{
public int id;
public SubEntity(int id){
tis.id = id;
}
}
Run Code Online (Sandbox Code Playgroud)
还有一个HashMap:
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("data1", 1);
map.put("data2", "name");
map.put("data3", 1.7);
map.put("data4", new SubEntity(11));
Run Code Online (Sandbox Code Playgroud)
我需要通过使用hashmap中的反射来为实体动态的所有字段设置值的正确方法.像这样的东西:
for (Field f : entity.getClass().getDeclaredFields()) {
String name = f.getName();
Object obj = map.get("name");
// Need set value field base on its name and type.
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?假设我在实体中有很多子类.
Bri*_*new 10
如果你想去反射路线,那么为什么不使用Field.set(Object,Object)及其更安全的兄弟姐妹(参见doc)
f.set(myEntity, obj);
Run Code Online (Sandbox Code Playgroud)
但是,如果你可以,我可能会委托给对象,它可以通过地图填充自己,例如
myEntity.populateFromMap(myMap);
Run Code Online (Sandbox Code Playgroud)
在你班上做艰苦的工作.
| 归档时间: |
|
| 查看次数: |
13615 次 |
| 最近记录: |