以下是例子:
public class Car{
private float param;
public Car(float rawParam) {
// process rawParam before assign it to this.param
this.param = rawParam * 2;
}
}
public class Truck extends Car{
public Truck(Car car) {
// How do I instantiate Car?
}
}
没有默认的构造函数,所以我不能创建一些任意的父对象,然后通过反射克隆传递的汽车。 提供的唯一构造函数需要一些父对象本身不知道的原始参数。 在这种情况下,如何实例化Car and Truck?谢谢!
答案 0 :(得分:1)
如果你希望他的实例基于Truck
的另一个实例的值Car
,那么使用你的构造函数将Car
复制到Truck
,这个可能看起来像这样:
public Truck(Car car) {
super(car.getParam());
}
假设getParam
存在并返回您想要的值!!
请注意,如果car
为空,您将收到RuntimeException
(NullPointerException
),但由于Super
需要成为第一个,因此您无法检查言。
嗯,你可以在某些方面,比如使用三元操作:
public Truck(Car car) {
super(car != null ? car.getParam() : -1);
}
还有其他解决方案,但这不是重点。