Language/Java
[Java] Generic 메서드
p8labs
2022. 6. 25. 16:16
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
GitHub - rnrl1215/java-exercise
Contribute to rnrl1215/java-exercise development by creating an account on GitHub.
github.com
728x90
반응형