자바 제네릭스(Generics)에 대해서 - T[], List<T> 등의 의미


ArrayAdapter의 두 생성자를 보면 다음과 같이 되어있다.

그런데 세 번째 매개인자의 데이터 타입이 T[] objects로 되어 있다.


ArrayAdapter(Context context, 

                    int textViewResourceId, T[] objects)

⇒ T[] objects가 의미하는 것은 어떤 배열이 여기에 올수 있다는 뜻이다.

T[]가 의미하는 것은 배열은 배열인데 data type은 어떤 data type도 가능하다는 뜻이다.


ArrayAdapter(Context context, 

                         int textViewResourceId, List<T> objects)

⇒ List<T> objects가 의미하는 것은 이 매개 인자의 자리에 List라는 interface의 객체가 올수 있다는 뜻이다. 

List<T>이므로 List가 담는 내용물의 data type은 T타입이므로 사용자가 정의하는 data type 뭐든지 올수 있다. 


그런데 List라는 interface를 보면 List를 implements한(상속받은) 하위 클래스들이 있는데 이들 중 어느 하나가 올수 있다는 뜻이다. 

대표적으로 ArrayList<E>가 올수 있다는 뜻이다.


public interface List implements Collection<E>

java.util.List<E>


Known Indirect Subclasses

AbstractList<E>, AbstractSequentialList<E>, ArrayList<E>, CopyOnWriteArrayList<E>,

LinkedList<E>, ObservableArrayList<T>,ObservableList<T>, Stack<E>, Vector<E>



+ Recent posts