본문 바로가기
Language/java

[Java] 지네릭스_지네릭 클래스의 객체 생성과 사용

by gamxong 2022. 7. 29.

1. 3 지네릭 클래스의 객체 생성과 사용

: 참조변수와 생성자에 대입된 타입이 일치해야 함

Box<Apple> appleBox = new Box<Apple>();  // OK
Box<Apple> appleBox = new Box<Grape>();  // 에러

두 타입이 상속관계에 있어도 마찬가지. Apple이 Fruit의 자손이라고 가정하자.

Box<Fruit> appleBox = new Box<Apple>();  // 에러. 대입된 타입이 다르다.

 

두 지네릭 클래스의 타입이 상속관계에 있고, 대입된 타입이 같은 것은 OK

Box<Apple> appleBox = new FruitBox<Apple>();  // Ok. 다형성

 

추정이 가능한 경우 생략 가능

Box<Apple> appleBox = new Box<Apple>();
Box<Apple> appleBox = new Box<>();  // 생략가능

 

생성된 Box<T>의 객체에 객체를 추가할 때, 대입된 타입과 다른 타입의 객체는 추가할 수 없다.

Box<Apple> appleBox = new Box<Apple>();
appleBox.add(new Apple());  // OK
appleBox.add(new Grape());  // error. Apple객체만 추가가능

 

Apple이 Fruit의 자손이면 가능

Box<Fruit> fruitBox = new Box<Fruit>();
fruitBox.add(new Fruit());  // OK
fruitBox.add(new Apple());  // OK

 

 

댓글