由另一个相同类型的对象更新java对象的属性

时间:2017-10-28 17:36:10

标签: java arraylist

你能举例说明如何用同一类型的另一个对象更新一个对象中的值吗?例如,这是我的班级:

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

如果不手动设置所有属性,有什么方法可以做到吗?

1 个答案:

答案 0 :(得分: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);