ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Java 가변인자
    Java 2022. 1. 5. 10:47

    오버로딩의 한계를 극복한 가변인자

    오버로딩을 통해 어떤 메소드의 매개변수가 계속해서 늘어난다고 가정해보자

    //ex
    public OrderItem orderItems(OrderItme orderitem1){...}
    public OrderItem orderItems(OrderItme orderitem1, OrderItme orderitem2){...}
    public OrderItem orderItems(OrderItme orderitem1, OrderItme orderitem2, OrderItme orderitem3){...}

    이런 경우 일일이 매개변수 하나하나 오버로딩 해줘야할까? 아니다.
    이럴 땐 매개변수의 개수를 동적으로 지정해줄 수 있는 가변인자를 사용하면 된다.

    가변인자 사용법

    public static Order createOrder(Member member, Delivery delivery, OrderItem... orderItems){
            Order order = new Order();
            for (OrderItem orderItem : orderItems) {
                order.addOrderItem(orderItem);
            }
            return order;
        }

    위 코드에서 매개변수 OrderItem...을 지목하자, 사용하고자 하는 클래스에 '...'을 붙여주면 된다.

    가변인자 주의점

    가변인자는 내부적으로 배열을 생성해서 사용하기 때문에 남용은 금물!
    만약 가변인자 외에도 다른 매개변수가 더 있다면 가변인자는 마지막에 선언해야 한다.
    가능하면 가변인자를 사용한 메소드는 오버로딩하지 않는것이 좋다.

    //because
    가변인자로 오버로딩된 메서드가 두개 이상일 때 컴파일러는 어떤 메소드를 사용해야하는지
    구분하지 못하기 때문에 

    'Java' 카테고리의 다른 글

    length, length(), size() 차이  (0) 2023.01.30
    List.of()  (0) 2023.01.30
    stream()  (0) 2023.01.30
    람다(lambda)  (2) 2023.01.30
    Java 오버로딩과 오버라이딩  (0) 2022.01.05
Designed by Tistory.