타입변수
- 지네릭클래스를 작성할 떄, Object타입 대신 타입 변수(E)를 선언해서 사용
타입 변수에 대입하기
- 객체를 생성시, 타입 변수(E) 대신 실제 타입(Tv)을 지정 (대입)
- 타입 변수 대신 실제 타입이 지정되면, 형변환 생략가능
지네릭스 용어
class Box<T> {}
- Box
: 지네릭스 클래스. - T: 타입 변수 또는 타입 매개변수(T는 타입 문자)
- Box: 원시 타입(raw type)
지네릭 타입과 다형성
- 참조 변수와 생성자의 대입된 타입은 일치해야 함
1 | ArrayList<Tv> list = new ArrayList<Tv>(); //OK |
2 | ArrayList<Product> list = new ArrayList<Tv>(); //에러. 불일치 |
- 지네릭 클래스간의 다형성은 성립.(여전히 대입된 타입은 일치해야 함)
1 | List<Tv> list = new ArrayList<Tv>(); //OK |
2 | list<Tv> list = new LinkedList<Tv>(); //OK |
- 매개변수의 다형성도 성립
1 | ArrayList<Product> list = newArrayList<Product>(); |
2 | list.add(new Product()); |
3 | list.add(new Tv()); //OK |
4 | list.add(new Audio()); //OK |