使用Hashmap更新Java对象



我有一个模型的一些属性,例如:

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));
    }
}

注意,我没有声明或处理反射带来的任何异常。


另一个完全不同的问题:你为什么要这样做?使用反射来更新对象的字段听起来像是一个真正的设计问题。

最新更新