Free Lines Arrow
본문 바로가기
Language/Java

[Java] Generic 메서드

by skahn1215 2022. 6. 25.
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
반응형

'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

댓글