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

권정익님의 프로필 이미지
권정익

작성한 질문수

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

섹션 10. List.of()

해결된 질문

작성

·

138

0

복습하다 문득 이 코드를 보고 생각이 들었습니다.

 

ArrayList<MyUser> list = new ArrayList<>(List.of(myUser1, myUser2, myUser3));
List<MyUser> list1 = List.of(myUser1, myUser2, myUser3);
List로 반환되는 건 맞는 거 같은데...
static <E> List<E> of(E e1, E e2, E e3) {
    return ImmutableCollections.listFromTrustedArray(e1, e2, e3);
}

List.of()는 분명 List타입으로 반환이 되는데 ArrayList에 어떻게 들어가는 건가요?

List가 ArrayList를 받을 수는 있지만, 그 반대는 안 되는 거 아닌가 해서요!!

 

답변 1

1

안녕하세요. 권정익님, 공식 서포터즈 코즈위버입니다.

자바 스펙의 ArrayList의 생성자 부분을 보면 이런 생성자가 있습니다.

ArrayList(Collection<? extends E> c)

즉, Collection 타입이면 무엇이든 생성자로 넘길수가 있게 설계되어 있습니다. 그래서 ArrayList의 생성자에 List.of() 결과를 넣어도 문제가 없습니다 🙂

아래 링크에서 ArrayList 의 Constructor 부분을 참조해주세요.

https://docs.oracle.com/javase/8/docs/api/

 

감사합니다.

 

권정익님의 프로필 이미지
권정익

작성한 질문수

질문하기