-
Notifications
You must be signed in to change notification settings - Fork 4
Open
Labels
Description
무엇을 알게 되었나요?
가변인자
가변인자, 말 그대로 여러 개의 매개변수를 받을 수 있다는 뜻이다. 가변인자를 사용하면 메서드 호출 시에 전달되는 인자의 개수를 동적으로 변경할 수 있다. 배열을 포함한 모든 참조자료형(Wrapper Class, String, Object, List, Map)이 가변인자로 사용 가능하지만 기본 자료형은 가변인자로서 사용할 수 없다.
가변인자를 사용하는 방법은 간단하다. 아래 코드처럼 변수 타입 뒤에 기호(...)를 붙여주면 된다. 다만, 다른 파라미터와 가변인자를 같이 사용하는 경우에는 가변인자를 제일 뒤에 위치시켜야 한다.
public static Order createOrder(Member member, Delivery delivery, OrderItem... orderItems) {
Order order = new Order();
order.setMember(member);
order.setDelivery(delivery);
for (OrderItem orderItem : orderItems) {
order.addOrderItem(orderItem);
}
order.setStatus(OrderStatus.ORDER);
order.setOrderDate(LocalDateTime.now());
return order;
}그렇다면 왜 가변인자를 사용하는 것일까? List 자료형을 활용해도 되지 않을까? 아래 코드를 살펴보자.
// 가변인자 사용
public void printArgs(String... args) {
for (String arg : args) {
System.out.println(arg);
}
}
// 리스트 사용
public void printArgs(List<String> args) {
for (String arg : args) {
System.out.println(arg);
}
}
// -------------------------------- 함수 호출 ----------------------------------- //
// 가변인수 사용 함수 호출
printArgs("Hello", "World");
// List 사용 함수 호출
List<String> args = Arrays.asList("Hello", "World");
printArgs(args); 두 메서드는 매개변수의 타입 외에는 차이가 없고, 기능적으로 동일하다. 다만 메서드를 호출함에 있어 가변인자는 호출 코드의 가독성과 사용편의성을 높일 수 있는 장점이 있음을 확인할 수 있다.
어려운 내용이 있었다면 이를 어떻게 해결하였나요?
- 구글링