Notice
Recent Posts
Recent Comments
Link
«   2026/05   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
Archives
Today
Total
관리 메뉴

ki-sd 님의 블로그

[2026-04-02] 가변 크기 배열 ArrayList와 제네릭(Generics)의 안정성 본문

JavaStudy

[2026-04-02] 가변 크기 배열 ArrayList와 제네릭(Generics)의 안정성

ki-sd 2026. 4. 17. 21:29

고정된 길이만 가질 수 있었던 배열의 구조적 한계를 완벽히 깨부수는 자바 컬렉션 프레임워크(Collection Framework)의 첫 주자를 다루었다.

 

1. ArrayList의 동적 크기 할당(Dynamic Sizing)

  • ArrayList는 내부적으로는 일반 배열을 사용하지만, 데이터가 꽉 차면 자동으로 더 큰 새로운 배열을 내부에서 생성하고 기존 데이터를 복사해 옮기는 똑똑한 클래스다.
  • 개발자는 배열의 크기를 신경 쓸 필요 없이 add(), remove() 등의 메서드만 호출하여 데이터를 무한히 늘리거나 중간에 삽입/삭제할 수 있는 엄청난 편리함을 경험했다.

2. 제네릭(Generics) - 타입의 명확화와 캐스팅 생략

  • 컬렉션은 모든 객체의 최상위인 Object 타입으로 데이터를 저장하기 때문에 어떤 데이터든 다 넣을 수 있다는 장점이 있지만, 꺼낼 때 무슨 타입인지 몰라 런타임 에러(ClassCastException)가 발생할 위험이 높다.
  • 이를 해결하기 위해 <String>, <Member>처럼 꺾쇠기호를 사용하는 제네릭을 도입했다. 컬렉션에 들어갈 데이터의 타입을 컴파일 단계에서 강제로 고정시킴으로써, 엉뚱한 데이터가 들어오는 것을 사전에 차단하고 데이터를 꺼낼 때 매번 강제 형변환(Casting)을 해야 하는 수고로움을 완벽히 제거하는 타입 안정성(Type Safety)을 체감했다.