개인 공부 (23.07~
자바 ...(점점점) 문법
Song쏭
2023. 12. 24. 18:04
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;
}
Java에서 ... (세 개의 점)은 가변 인자(varargs, Variable Arguments)를 나타내는 구문입니다.
이 구문은 메서드가 고정된 개수의 인자가 아닌, 가변적인 개수의 인자를 받을 수 있게 해줍니다.
즉, 해당 타입의 인자를 0개 이상 전달할 수 있음을 의미합니다.
위 코드에서는 createOrder 메서드는 세 번째 인자로 OrderItem 타입의 가변 인자를 받습니다.
이는 OrderItem 객체들을 0개, 1개, 또는 그 이상 전달할 수 있음을 의미합니다.
메서드 내부에서 가변 인자는 배열로 처리됩니다.
위의 예에서 orderItems는 OrderItem[] 타입으로 사용됩니다.
가변 인자는 메서드의 마지막 파라미터여야 합니다.
하나의 메서드에 하나의 가변 인자만 사용할 수 있습니다.
가변 인자를 사용하면 메서드를 더 유연하게 사용할 수 있습니다.
예를 들어, createOrder 메서드를 호출할 때, OrderItem 객체를 아무것도 전달하지 않거나, 하나 또는 여러 개를 전달할 수 있습니다.
Order order1 = createOrder(member, delivery); // OrderItem 없음
Order order2 = createOrder(member, delivery, orderItem1); // OrderItem 하나
Order order3 = createOrder(member, delivery, orderItem1, orderItem2, orderItem3); // 여러 OrderItem