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()?
 
     
    