如何在java中部分地将对象状态复制到另一个对象中

问题描述 投票:0回答:2

我想将一个对象状态复制到另一个对象中。

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

我想将部分状态复制到另一个对象而不影响其状态

我该怎么做请让我知道正确的方法呢?

java object cloning
2个回答
1
投票

我终于找到了使用反射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();
			}

		}
	}

-1
投票

Fruit Class必须实现java.lang包中可用的Cloneable接口,并在fruit类中提供方法克隆。

现在在主类中,使用fruit2 =(Fruit)fruit1.clone();并尝试打印价格和口味。

© www.soinside.com 2019 - 2024. All rights reserved.