인프런 커뮤니티 질문&답변

galmeagi2님의 프로필 이미지
galmeagi2

작성한 질문수

김영한의 실전 자바 - 중급 2편

섹션 3. ArrayList - 제네릭2

작성

·

106

·

수정됨

0

안녕하세요!

해당 파트 복습하다가 궁금증이 생겨 질문 드립니다!

제네릭은 런타임 시점에 Object나 따로 지정한 상한선으로 변하기 때문에 생성자에는 사용하지 못 한다고 이해하고 있습니다.

때문에 해당 배열도 Object 타입으로 선언한 것은 이해했는데요.

여기서 궁금한 것은,

해당 코드도 런타임 시에는 E가 Object로 바뀔텐데, 그럼 Object 타입으로 캐스팅되어서 반환되어야 하는 것이 아닌지 궁금합니다!

혹시 메서드 선언부에 타입 매개변수가 있고 없고의 차이인 건가요?

아니면 pdf 파일에는 나와있지 않지만, Main 함수에서 get 함수를 반환받을 때 거기서 자바가 E 타입으로 캐스팅해주는 건가요?

 

<질문 정리>

생성자 안에 있는 E 타입은 변하는데, 왜 get 함수 안에 있는 E 타입은 유지가 되는지 궁금합니다!

답변 1

1

안녕하세요. galmeagi2님, 공식 서포터즈 David입니다.

 

생성자 내, new E는 사용할 수 없습니다.(new 키워드와 타입정보 E).

이런 부분 때문에 모든 것을 받을 수 있는 Object로 변경한 것입니다.

add, get에 있는 E는 리스트 생성시 전달되는 타입으로 변경됩니다.

이 부분은 new 키워드와 E가 사용될 수 없는 부분과는 다릅니다:)

 

이 부분에 대해서는 직접 구현하는 배열 리스트5 - 제네릭2편에서 자세하게 설명하고 있습니다. 이해가 잘 안되시는 부분이 있다면 반복 청취한 후 궁금하신 부분을 다시 질문 부탁드립니다.

 

감사합니다.

galmeagi2님의 프로필 이미지
galmeagi2

작성한 질문수

질문하기