728x90
타입 변수 란 ?
1.
클래스를 작성 할 때, Object 타입 대신에 타입 변수 (E) 를 선언 해서 사용.


보통 변수명은 Type을 의미하는 T 또는 Element를 의미하는 E로 작성 한다.
2.
타입 변수에 대입 하기
객체를 생성 할 때, 타입 변수 (E) 대신에 실제 타입을 지정 (대입) 한다.
타입 변수 대신에 실제 타입이 지정 되면 형변환이 생략 가능 하다.
예시 )
ArrayList<Tv> tvList = new ArrayList<Tv>();
// 참조변수 오른쪽
// 생성자 왼쪽
그러면 아래와 같이 변하게 된다.

제네릭스 용어 란 ?
1.
Box<T>
제네릭 클래스. 'T 의 Box' 또는 T Box' 라고 읽는다.
2.
T
타입 변수 또는 타입 매개 변수 (T는 타입 문자)
3.
Box
원시 타입 (raw type)


제네릭 타입과 다형성
참조 변수와 생성자의 대입된 타입은 반드시 일치 해야 한다.
ArrayList<Tv> list = new ArrayList<Tv>(); // OK 일치.
ArrayList<Product> list = new ArrayList<Tv>(); // 에러 불일치.
제네릭 클래스간의 다형성은 성립 된다. (하지만 대입된 타입은 반드시 일치 해야 한다)
List<Tv> list = new ArrayList<Tv>(); // OK. 다형성. ArrayList가 List 인터페이스를 구현
List<Tv> list = new LinkedList<Tv>(); // OK. 다형성. LinkedList가 List 인터페이스를 구현
매개변수의 다형성도 성립 된다.
ArrayList<Product> list = new ArrayList<Product>();
list.add(new Product());
list.add(new Tv()); // Tv 객체가 Product 클래스의 자손이라면 OK.
list.add(new Audio()); // Audio 객체가 Product 클래스의 자손이라면 OK.
예시 )

반응형
'Java의 정석 > 제네릭스, 열거형, 어노테이션' 카테고리의 다른 글
제네릭스 (Generics) (1) | 2023.10.11 |
---|