我想将一个对象状态复制到另一个对象中。
类
public class Fruit {
private String name;
private String price;
private String taste;
public Fruit()
{
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPrice() {
return price;
}
public void setPrice(String price) {
this.price = price;
}
public String getTaste() {
return taste;
}
public void setTaste(String taste) {
this.taste = taste;
}
}
main()
{
Fruit fruit1=new Fruit();
fruit1.setPrice("50");
fruit1.setTaste("sweet");
Fruit fruit2=new Fruit();
fruit2.setName("Apple");
// i want to copy price and taste property values to same properties of fruit2 object like update how do i do that
}
我只想将价格和口味属性复制到水果2
我想将部分状态复制到另一个对象而不影响其状态
我该怎么做请让我知道正确的方法呢?
我终于找到了使用反射API的解决方案。
private static void partialStateTransfer(Object copyFrom,Object copyTo) {
//you can't update null or 0 value using this method
Field[] fields = copyFrom.getClass().getDeclaredFields();
for (Field field : fields) {
try {
field.setAccessible(true);
if ((field.get(copyFrom) != null) && !(field.get(copyFrom).equals(new Integer(0)))) {
field.set(copyTo, field.get(copyFrom));
}
} catch (IllegalArgumentException | IllegalAccessException e) {
e.printStackTrace();
}
}
}
Fruit Class必须实现java.lang包中可用的Cloneable接口,并在fruit类中提供方法克隆。
现在在主类中,使用fruit2 =(Fruit)fruit1.clone();并尝试打印价格和口味。