当前位置:  开发笔记 > 编程语言 > 正文

Java:从父对象创建子类对象

如何解决《Java:从父对象创建子类对象》经验,为你挑选了2个好方法。

新手Java问题.说我有:

public class Car{
  ...
}

public class Truck extends Car{
  ...
}

假设我已经有了一个Car对象,如何从这个Car对象创建一个新的Truck对象,以便将Car对象的所有值复制到我的新Truck对象中?理想情况下,我可以这样做:

Car c = new Car();
/* ... c gets populated */

Truck t = new Truck(c);
/* would like t to have all of c's values */

我是否必须编写自己的复制构造函数?每次Car获得一个新领域时都必须更新...



1> Tom Hawtin -..:

是的,只需将构造函数添加到Truck.您可能还想为Car添加构造函数,但不一定是公开的:

public class Car {
    protected Car(Car orig) {
    ...
}

public class Truck extends Car {
    public Truck(Car orig) {
        super(orig);
    }
    ...
}

作为一项规则,通常最好将类(或者您可能想要标记那些最终的)或抽象化.

它看起来好像你想要一个Car对象,然后让相同的实例变成一个Truck.更好的方法是将行为委托给Car(Vehicle)中的另一个对象.所以:

public final class Vehicle {
    private VehicleBehaviour behaviour = VehicleBehaviour.CAR;

    public void becomeTruck() {
        this.behaviour =  VehicleBehaviour.TRUCK;
    } 
    ...
}

如果您实现,Cloneable那么您可以"自动"将对象复制到同一个类的实例.然而,存在许多问题,包括必须复制易于出错的可变对象的每个字段并且禁止使用final.



2> 小智..:

如果您在项目中使用Spring,则可以使用ReflectionUtils.

推荐阅读
手机用户2402852307
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有