-
오버로딩의 한계를 극복한 가변인자
오버로딩을 통해 어떤 메소드의 매개변수가 계속해서 늘어난다고 가정해보자
//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