2017-10-28 132 views
1

你能告诉我如何通过同一类型的另一个对象更新一个对象中的值吗?例如,下面是我的课:通过另一个同类型的对象更新java对象的属性

public class MyObj { 
    private int id; 
    private String name; 
    private String phone; 
    private String address; 

    // some getters and settters ... 
} 

我有另一个类的东西:

private ArrayList<MyObj> objectsList; // list of some objects 
public MyObj update (MyObj newObj) { 

    // here I need set new values of properties of newObj to object with same id property in objectsList; 
} 

存在一定的路该怎么做,而无需手动设置的所有属性?

+6

不,没有任何干净的方法来做到这一点。您需要编写这3行代码。 –

+0

你可以使用反射 - 就是这样。 – yshavit

+1

在MyObj中创建一个拷贝构造函数可能会更清洁,并且在需要创建一个dup时使用它。这种方法还可以避免潜在的并发问题,您可能会在逐个字段更新对象时遇到这些问题,因为现在您所做的只是引用分配,这是一个原子操作。 – alfasin

回答

0

你必须通过迭代上或由Map<String, MyObj>

替换识别列表中的对象存在一定的路该怎么做,而无需手动设置所有 属性?

当然。
反射解决了它,但反射具有成本(它比较慢),它可能在运行时失败或发生意外的行为。
您可以手动执行此操作,或者更好地使用为您执行任务的库。
但在你的情况下,只处理3个字段,似乎使用反射的开销。
只需使用setter方法对其进行设置:

MyObj existingObj = ...; // retrieved by a search 
existingObj.setName(newObj.getName()); 
existingObj.setPhone(newObj.getPhone()); 
existingObj.setAddress(newObj.getAddress()); 

作为选择,如果改变对象的引用是不是一个问题,只需更换对象实际上由在参数中提供一个列表:

int indexOfTheObject = ...; // retrieved by a search 
objectsList.set(indexOfTheObject, newObj); 
相关问题