В данном случае ничего не делают , но могут. Но что-то в коде не
того. Идентификация инстанции в фильтре по типу
ad.getVehicleTypeByPurpose().equals(vehicleType) и надо городить
огород с передачей параметра при фильтрации пустого класса данного
типа. И есть еще и enum VehicleAllTypes по которому можно и
определить тип но надо привязать класс к enum. Поэтому Java отстой. Все гораздо проще делается na Scala. Типа:
class VehicleTypeByPurpose(name : String) {}
case class PassengerType(name : String) extends VehicleTypeByPurpose(name) {}
case class CarType(name : String) extends VehicleTypeByPurpose(name){}
val l = List(PassengerType("Pas1"),CarType("Car1"), PassengerType("Pas2"))
l.filter( i => i.isInstanceOf[PassengerType])