Let's assume I have four classes: Car, Convertible, PickupTruck and CarManufacturer.
Car is the abstract class that Convertible and PickupTruck inherit from:
public abstract class Car {
private String name;
private String colour;
//Constructor
}
Convertible and PickupTruck both have parameterless constructors:
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 stores a List of either Convertibles or PickupTrucks.
public class CarManufacturer <T extends Car>{
private List<T> carsProduced = new LinkedList<>();
}
How can I implement a function produceCar() that calls the parameterless constructor and adds the object to the list? I tried:
public void produceCar(){
this.carsProduced.add(new T());
}
Returning the error: Type parameter 'T' cannot be instantiated directly