자바 공부 기록(14)-지네릭스, 지네릭 타입과 다형성
my code archive
article thumbnail
반응형
지네릭스란?

컴파일 시 타입을 체크해 주는 기능

//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.

 

예제

 

반응형
profile

my code archive

@얼레벌레 개발자👩‍💻

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

반응형