Engineering Note

[Java] ArrayList 초기화 본문

Programming Language/Java

[Java] ArrayList 초기화

Software Engineer Kim 2025. 12. 15. 17:40

List 컬렉션은 필드로 선언할 때 new ArrayList(); 던지 다른 컬렉션으로 초기화를 해주어야 한다.

 

초기화를 해주지 않으면, 값을 추가할 때 NullPointException이 발생한다.

 

예시 코드

// ❌ 초기화 안 함
@Entity
public class Order {
    private List<OrderItem> orderItems;
    
    public void addOrderItem(OrderItem item) {
        this.orderItems.add(item);  // 💥 NullPointerException!
    }
}

// ✅ 초기화 함
@Entity
public class Order {
    private List<OrderItem> orderItems = new ArrayList<>();
    
    public void addOrderItem(OrderItem item) {
        this.orderItems.add(item);  // ✅ 안전!
    }
}

 

 

같은 맥락에서 테스트 코드에서 검증을 할 때도 컬렉션 필드는 null 인지 여부와 내부 객체가 비어있는지도 체크하는 isNotEmpty()를 사용한다.

 

 

// 케이스 1: null
Order order = new Order();
order.setOrderItems(null);
assertThat(order.getOrderItems()).isNotEmpty();  // ❌ 실패 (null)

// 케이스 2: 빈 리스트
Order order = new Order();
order.setOrderItems(new ArrayList<>());
assertThat(order.getOrderItems()).isNotEmpty();  // ❌ 실패 (비어있음)

// 케이스 3: 요소 있음
Order order = new Order();
order.setOrderItems(List.of(orderItem1, orderItem2));
assertThat(order.getOrderItems()).isNotEmpty();  // ✅ 통과!


isNotEmpty()를 통과하기 위해서는 케이스3번 처럼 null도 아니면서 값도 있도록 초기화를 해주어야 한다.

케이스1은 orderItems에 null 값을 넣어주었기 때문에 당연히 isNotEmpty()로 테스트하면 테스트가 실패한다. 케이스2는 new ArrayList<>()로 초기화를 해주어서 null은 아니지만 값이 비어있으므로 isNotEmpty()로 검증을 하면 마찬가지로 테스트가 실패한다.

 

 

Comments