개인 공부 (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