제네릭 목록은 잘못된 타입을 저장 경계에서 막는다

MyArrayList<E>는 공개 API에서 E만 받고 Object[]와 캐스팅을 구현 안에 가둡니다.

  1. 1

    타입 선택

    MyArrayList<Entry>

  2. 2

    add(E)

    컴파일 게이트

  3. 3

    Object[]

    내부 저장

  4. 4

    get cast

    한 지점에 격리

  5. 5

    반환

    항상 E

핵심: 사용 슬롯에는 add(E)로 들어온 값만 있으므로 get의 한 캐스팅을 증명할 수 있습니다.