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
'개인 공부 (23.07~' 카테고리의 다른 글
톰캣 콘솔 한글 깨짐 해결 (0) | 2024.01.22 |
---|---|
스프링 없이 mysql 연동 (1) | 2024.01.14 |
애플리케이션 아키텍처 (0) | 2023.12.22 |
도메인 모델과 테이블 설계 (1) | 2023.12.19 |
테스트 코드 작성 - isSameAs, isEqualTo, isInstanceOf (0) | 2023.12.12 |