반응형
지네릭스란?
컴파일 시 타입을 체크해 주는 기능
//Tv 객체만 저장할 수 있는 ArrayList 생성
ArrayList<Tv> tvList = new ArrayList<Tv>();
tvList.add(new Tv()); //OK
tvList.add(new Audio()); //컴파일 에러, Tv 외에 다른 타입은 저장 불가
<지네릭스의 장점>
1. 타입 안정성 제공
2. 타입 체크와 형변환을 생략할 수 있으므로 코드가 간결해 진다.
타입 변수
- 클래스를 작성할 때 Object 타입 대신 타입 변수<E>를 선언해서 사용.
- 객체 생성 시 타입 변수<E> 대신 실제 타입을 지정(대입)
예제
타입 변수를 선언하기 전이라 에러가 나지 않지만
<Tv> 타입 변수를 선언한 후에는 Tv 타입의 객체만 저장 가능하다.
-> new Audio()가 저장될 수 없어 에러가 난다.
형변환을 안해도 된다.
지네릭스 용어
- Box<T> : 지네릭 클래스, 'T의 Box', 'T Box'라고 읽는다.
- T : 타입 변수 또는 타입 매개변수.
- Box : 원시 타입 (일반 클래스)
지네릭 타입과 다형성
- 참조 변수와 생성자의 대입된 타입은 일치해야 한다.
ArrayList<Tv> list = new ArrayList<Tv>(); //일치
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 = newArrayList<Product>();
list.add(new Product());
list.add(new Tv());
list.add(new Audio()); ->Product의 자손도 OK.
예제
반응형
'📒 education archive > 🎀JAVA' 카테고리의 다른 글
[국비 학원 기록/자바] Switch Case 선택문, yield 예약어, Java JRE 바꾸는 방법 (0) | 2021.10.03 |
---|---|
[국비 학원 기록/자바] If, IfElse 조건문 예제, 스캐너 Scanner 클래스 사용 (0) | 2021.10.03 |
자바 공부 기록(13)-TreeSet, 예제 (0) | 2021.08.19 |
자바 공부 기록(12)-HashSet, 예제 (0) | 2021.08.19 |
자바 공부 기록(11)-LinkedList, ArrayList와 비교 (0) | 2021.08.19 |