해결된 질문
작성
·
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/
감사합니다.