我们假设我有四个类:Car
,Convertible
,PickupTruck
和CarManufacturer
。Java泛型调用构造函数
Car
是抽象类,Convertible
和PickupTruck
继承:
public abstract class Car {
private String name;
private String colour;
//Constructor
}
Convertible
和PickupTruck
都有参数构造函数:
public class Convertible extends Car {
private boolean roofUnfolded;
public Convertible() {
super("Convertible", "Red");
this.roofUnfolded = false;
}
}
public class PickupTruck extends Car {
private double capacity;
public PickupTruck() {
super("Pickup Truck", "Black");
this.capacity = 100;
}
}
CarManufacturer
商店要么Convertibles
或PickupTrucks
的名单。
public class CarManufacturer <T extends Car>{
private List<T> carsProduced = new LinkedList<>();
}
我怎样才能实现一个功能produceCar()
调用参数的构造函数和将对象添加到列表中?我想:
public void produceCar(){
this.carsProduced.add(new T());
}
返回错误:Type parameter 'T' cannot be instantiated directly
那么有比使用反射更好的方法,但仍然是一个有效的答案。 – Flown