0%

타입변수

타입변수

  • 지네릭클래스를 작성할 떄, Object타입 대신 타입 변수(E)를 선언해서 사용

타입 변수에 대입하기

  • 객체를 생성시, 타입 변수(E) 대신 실제 타입(Tv)을 지정 (대입)
  • 타입 변수 대신 실제 타입이 지정되면, 형변환 생략가능

image

지네릭스 용어

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

image