gpt4 book ai didi

java - 简单的方法获取对象中的非空字段值并设置为同一类的另一个对象

转载 作者:行者123 更新时间:2023-11-30 08:22:44 27 4
gpt4 key购买 nike

在下面的代码中,我有两个属于同一类的对象。一个对象(A - employeeObjectInDatabase)设置了所有字段。另一个对象(B - employeeObjectForUpdate)只设置了几个字段。基本上我需要将对象 B 的非空值设置为对象 A。下面的代码对每个字段进行“if not null”检查以设置值。还有其他更好的方法来完成这项工作吗?

有没有更好的方法来替换注释“BLOCK 1 BEGIN”和“BLOCK 1 END”之间的代码?

对于字段很少的类,检查 if not null 很容易,但如果字段超过 20 个,则需要进行大量 if not null 检查,因此考虑征求专家意见。

示例:

public class Employee {

private String id;

private String name;

private String department;

public String getId() {
return id;
}

public void setId(String id) {
this.id = id;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getDepartment() {
return department;
}

public void setDepartment(String department) {
this.department = department;
}


public static void main(String[] args) {

Employee newEmployeeObject = new Employee();
newEmployeeObject.setId("A100");
newEmployeeObject.setName("Albert");
newEmployeeObject.setName("Physics");

//newEmployeeObject is persisted into database

Employee employeeObjectForUpdate = new Employee();
employeeObjectForUpdate.setId("A100");
employeeObjectForUpdate.setName("Albert Einstein");

//Inorder to update only the fields that are not null

Employee employeeObjectInDatabase = employeeDao.getEmployee();

//BLOCK 1 BEGIN
if (null != employeeObjectForUpdate.getName())
employeeObjectInDatabase.setName(employeeObjectForUpdate.getName());

if (null != employeeObjectForUpdate.getDepartment())
employeeObjectInDatabase.setDepartment(employeeObjectForUpdate.getDepartment());

//BLOCK 1 END

//persist employeeObjectInDatabase as it has the updated information
}
}

最佳答案

您可以在您的 setter 方法中移动 null 检查

public void setName(String name) {
if(name!=null){
this.name = name;
}
}

然后在您的主要方法中,您可以简单地调用以下内容:employeeObjectInDatabase.setName(employeeObjectForUpdate.getName());

如果在您的数据访问层中,当您将数据库值填充到您的对象时,将应用相同的原则。也就是说,如果 Db 列值为 null,则不会设置属性

关于java - 简单的方法获取对象中的非空字段值并设置为同一类的另一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24156813/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com