【发布时间】:2020-05-05 06:53:27
【问题描述】:
我需要根据只包含更改的地图更新几个 POJO 字段。
例如(松散编码):
Class MyClass{
public MyClass(a,b,c);
private int a;
private int b;
private int c;
}
int main(){
Map<String, String> keyValueMap = new HashMap<>();
MyClass obj = new MyClass(1,2,3);
keyValueMap.put("c", 6);
keyValueMap.put("b", 4);
//Update only b and c values of obj:
updateObj(obj, keyValueMap);
keyValueMap.put("a", 5);
keyValueMap.put("b", 7);
//Update only a and b values of obj:
updateObj(obj, keyValueMap);
}
void updateObj(MyClass obj, Map<String, String> keyValueMap){
for (Map.Entry<String,String> entry : keyValueMap.entrySet())
if(entry.getKey().equals("a")
obj.setA(entry.getValue();
if(entry.getKey().equals("b")
obj.setB(entry.getValue();
if(entry.getKey().equals("c")
obj.setC(entry.getValue();
}
}
有没有更好的方法在完整的 if 链中实现 updateObj()?
谢谢大家。
【问题讨论】:
-
也许反射 API 可以帮助您解决这个问题? stackoverflow.com/questions/24094871/…
-
是的,反思。
-
谢谢各位,能提供一个例子吗?
-
反射是你所需要的。愿你觉得这篇文章有用吗:crunchify.com/…,就像我一样。
-
@dushkin 下面的文章提供了一组示例
标签: java