VehicleRepairService 에 House 가 들어가면 안된다. 하지만 모든 타입을 다 받게 해서 House 타입도 들어간다.
// House 타입이 가능하면 안됨
House house = new House();
VehicleRepairService<House> vehicleRepairRepairService = new VehicleRepairService<>();
vehicleRepairRepairService.repair(house);
public class VehicleRepairService<T> {
public boolean isSupport(T t) {
return (t instanceof Vehicle);
}
public void repair(T t){
if (isSupport(t)) { // Vehicle type 이 아니면 수리 불가
Vehicle vehicle = (Vehicle) t;
System.out.println(vehicle.getType() + " 수리완료");
} else {
System.out.println("수리불가");
}
}
}
public class VehicleRepairService<T extends Vehicle> {
// public boolean isSupport(T t) { 타입을 체크할 필요가 없음
// return (t instanceof Vehicle);
// }
public void repair(T t) {
Vehicle vehicle = t;
System.out.println(vehicle.getType() + " 수리완료");
}
}
public class Test {
public static void main(String[] args) {
VehicleRepairService<Vehicle> vehicleRepairService = new VehicleRepairService<>();
VehicleRepairService<Boat> boatVehicleRepairService = new VehicleRepairService<>();
VehicleRepairService<House> repairService = new VehicleRepairService<>(); // 에러 발생
}
}
댓글