另一个完全不同的问题:你为什么要这样做?使用反射来更新对象的字段听起来像是一个真正的设计问题。
我有一个模型的一些属性,例如:
public class Example
{
long id;
String a, b;
int c, d;
boolean e;
}
现在我想创建一个这样的方法
public void update(long id, Map<String, Object> properties)
{
....
}
在这个属性映射中我想要有像
这样的东西properties.put("a"、"测试");属性。("c",8);
我不太确定如何做到这一点。
最后我想这样做:
Example e = new Example(....);
.....
e.update(5L,properties);
有人能给我指出正确的路径吗?我找不到一个不指向属性或HashMap条目的搜索词。
thanks in advance
您正在搜索关键字反射。使用反射访问,您可以这样编写更新方法:
public void update(long id, Map<String, Object> properties) {
Object obj = getObjectById(id); // you have to implement that method
for (String property : properties.keySet()) {
Field field = obj.getClass().getField(property);
field.set(obj, properties.get(property));
}
}
注意,我没有声明或处理反射带来的任何异常。
另一个完全不同的问题:你为什么要这样做?使用反射来更新对象的字段听起来像是一个真正的设计问题。