【发布时间】:2020-05-16 08:38:13
【问题描述】:
我有以下课程:
public class File
{
@Getter
@Setter
private String id;
@Getter
@Setter
private String name;
@Getter
@Setter
private int size;
@Getter
@Setter
private String color;
... about 10 more variables
}
我有这个类的两个实例:
File file = new File(); // assume each variable has a value initialized
File newFile = new File(); // assume each variable has a value initialized
我想要的逻辑是如果我的newFile 包含一个变量的值,我想保留它。否则,我想回退到 file 对象中的原始值。
所以我有以下方法:
public void merge(File oldFile, File newFile)
{
if (newFile.getId() != null)
{
oldFile.setId(newFile.getId());
}
if (newFile.getName() != null)
{
oldFile.setName(newFile.getName());
}
if (newFile.getSize() != null)
{
oldFile.setSize(newFile.getSize());
}
if (newFile.getColor() != null)
{
oldFile.setColor(newFile.getColor());
}
... etc
}
如何避免如此多的 if 语句和空检查?在我看来,代码看起来很丑。
【问题讨论】:
-
为什么需要空检查?如果允许空值,只需复制空值。
-
如果它为 null,则意味着我想回退到 oldFile 值是什么,我不想用 null 替换它。请参阅我的评论“我想要的逻辑是,如果我的 newFile 包含变量的值,我想保留它。否则我想回退到文件对象中的原始值。”
-
你用龙目岛吗?
-
@sc0der 是的,我也在研究一个名为 ModelMapper 的库,我想知道这在这里是否有用。
-
这能回答你的问题吗? Copy POJO content from one bean to another
标签: java