728x90
반응형
Generic 메서드
- 메서드 선언 부에 지네릭 타입이 선언된 메서드를 지네릭 메서드라고 한다.
- 원래 static 메서드에는 타입 매개변수를 쓸수 없다.
하지만 메서드에 제네릭 타입을 선언하고 사용하는 것은 가능하다
public static <T extends Vehicle> void repair(VehicleContainer<T> vehicleContainer)
- 사용할때는 아래와 같이 타입을 명시해 줘야 한다.
VehicleServiceCenter.<Boat>repair(boatVehicleContainer);
VehicleServiceCenter.<Car>repair(carVehicleContainer);
Generic 메서드 예제 1
- 이제 선언부에 제네릭 타입을 선언해 줬기 때문에 매개변수로 지네릭을 받을수 있다.
@Slf4j
public class VehicleServiceCenter {
public static <T extends Vehicle> void repair(VehicleContainer<T> vehicleContainer) {
log.info("container list size : {}", vehicleContainer.getSize());
for(Vehicle vehicle : vehicleContainer.getVehicleList()) {
log.info("{} 수리완료", vehicle.toString());
}
}
}
Generic 메서드 예제 2
- 매개변수를 여러개 받을수도 있다.
@Slf4j
public class VehicleServiceCenterV2 {
public static <T extends Vehicle> void repair(VehicleContainer<T> vehicleContainer1, VehicleContainer<T> vehicleContainer2) {
log.info("container list size : {}", vehicleContainer1.getSize());
for(Vehicle vehicle : vehicleContainer1.getVehicleList()) {
log.info("{} 수리완료", vehicle.toString());
}
log.info("container list size : {}", vehicleContainer2.getSize());
for(Vehicle vehicle : vehicleContainer2.getVehicleList()) {
log.info("{} 수리완료", vehicle.toString());
}
}
}
Test
public class Test {
public static void main(String[] args) {
Car car1 = new Car("car1");
VehicleContainer<Car> carVehicleContainer = new VehicleContainer<>();
VehicleContainer<Boat> boatVehicleContainer = new VehicleContainer<>();
VehicleServiceCenter.<Boat>repair(boatVehicleContainer);
VehicleServiceCenter.<Car>repair(carVehicleContainer);
VehicleServiceCenterV2.<Boat>repair(boatVehicleContainer, boatVehicleContainer);
}
}
예제코드
https://github.com/rnrl1215/java-exercise/tree/main/src/main/java/generic/method
728x90
반응형
'Language > Java' 카테고리의 다른 글
[Java] Optional<T> 기본 (0) | 2023.02.06 |
---|---|
[Java] SQL Mapper 만들기 (0) | 2022.10.20 |
[Java] Generic 와일드 카드 (0) | 2022.06.25 |
[Java] Generic 제한 (0) | 2022.06.21 |
[Java] Generic 기초 (0) | 2022.06.11 |
댓글