How can I change the generic type in child-classes. I know, that i can override method load(); But i want to make the universal method for all children. I have abstract super class
public abstract class Vehicle <T extends Human> {
T t;
private final int maxPassengers;
private Set<T> currentPassengers = new HashSet<>();
public Vehicle(int maxPassengers) {
this.maxPassengers = maxPassengers;
}
public void load (T human) throws ToManyPassangersExeption {
if (currentPassengers.size()<maxPassengers)
currentPassengers.add(human);
else
throw new ToManyPassangersExeption();
}
}
load() realize loading Human to vehicle. I have different types of Human. For example:
public class Policeman extends Human {
}
In my class PoliceCar, i what to load only Policemen.
public class PoliceCar <T extends Policeman> extends Vehicle {
T t;
public PoliceCar() {
super(5);
}
}
Using this code, i can load all instanceof Human to PoliceCar.
How can i load only Policeman in PoliceCar without Overriding method load()?