gpt4 book ai didi

java - 将字段值设置为同一类的另一个实例

转载 作者:行者123 更新时间:2023-11-29 04:02:50 25 4
gpt4 key购买 nike

class Foo(){
private String x,y;
//getters setters
}
main(){
Foo bar1 = new Foo();
Foo bar2 = new Foo();
bar1.setX("hey");
bar2.setX("hi");
bar2.setY(" there");
setNewValuesFromLeftToRight(bar1,bar2);//left:bar1
System.out.print(bar2.getX+bar2.getY)// hey there
}

setNewValuesFromLeftToRight :此方法将获取具有相同类的任何 2 个对象,并使用 bar1 的非空字段值设置 bar2 的字段值
编写方法 setNewValuesFromLeftToRight 的最佳方法是什么?确保它应该是通用解决方案。我会使用反射吗?

最佳答案

我阅读这些要求的方式是,如果在左(源)bean 中存在相应的非空值,则应覆盖右(目标)bean 中的任何属性。因此,这与 PropertyUtils.copyProperties 略有不同,PropertyUtils.copyProperties 会覆盖所有属性(包括空源值)。

一种可能是使用 Jakarta Commons BeanUtils , 那么你可以使用

PropertyDescriptor[] descriptors = PropertyUtils.getPropertyDescriptors(leftBean);
if (descriptors != null) {
for (PropertyDescriptor descriptor : descriptors) {
try {
String propertyName = descriptor.getName();
Object val = PropertyUtils.getProperty(leftBean, name);
if (val != null) {
PropertyUtils.setProperty(rightBean, name, val);
}
} catch (Exception ignore) {
// not interested in what we can't read or write
}
}
}

关于java - 将字段值设置为同一类的另一个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2315651/

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