JAVA - 지네릭스(Generics) (5)

jodbsgh·2022년 4월 15일
0

💡"JAVA"

목록 보기
40/67

지네릭 타입의 형변환

  • 지네릭 타입과 원시 타입 간의 형변환은 바람직 하지 않다. ( 경고 발생 )
Box<Object> objBox = null;
Box box = (Box)objBox;		//ok. 지네릭타입 -> 원시타입.   경고발생
objBox = (Box<Object>)box;	//ok. 원시타입   ->지네릭 타입. 경고발생

지네릭 타입과 non-generic 타입간의 형변환은 항상 가능하다. 다만 경고가 발생할 뿐이다.

Box<Object> objBox = null;
Box<String> strBox = null;

objBox = (Box<Object>)strBox;	//에러. Box<String> -> Box<Object>
strBox = (Box<String>)objBox;	//에러. Box<Object> -> Box<String>
  • 와일드 카드가 사용된 지네릭 타입으로는 형변환 가능
Box<Object>			objBOX = (Box<Object>) new Box <String>();	//에러, 형변환 불가능
Box<? extends Object> wBox = (Box<? extends Object>)new Box<String>();	//ok
Box<? extends Object> wBox = new Box<String>();

//매개변수로 FruitBox<Fruit>, FruitBox<Apple>, FruitBox<Grape> 등이 가능
static Juice makeJuice(FruitBox<? extends Fruit> box){ ... }

FruitBox<? extends Fruit> box = new FruitBox<Fruit>();	//ok
FruitBox<? extends Fruit> box = new FruitBox<Apple>();	//ok
profile
어제 보다는 내일을, 내일 보다는 오늘을 🚀

0개의 댓글