🌱 오늘의 주제 : 지네릭 메서드와 형변환
🌱 지네릭 메서드
- 메서드의 선언부에 지네릭 타입이 선언된 메서드를 지네릭 메서드라고 한다.
- 지네릭 클래스에 정의된 타입 매개변수가 T이고, 지네릭 메서드에 정의된 타입 매개변수가 T이어도 이 둘은 별개의 것이다.
class FruitBox<T> {
...
static <T> void sort(List<T> list, Comparator<? super T> c) {
....
}
}
- 같은 클래스 내에 있는 멤버들끼리는 참조변수나 클래스이름, 즉 'this' 혹은 '클래스이름'을 생략하고 메서드 이름만으로 호출이 가능하지만, 대입된 타입이 있을 때는 반드시 써줘야 한다.
System.out.println( this. <Fruit> makeJuice(fruitBox)); // OK
System.out.println( Juicer. <Fruit> makeJuice(fruitBox)); // OK
🌱 지네릭 타입의 형변환
- 지네릭 타입과 넌지네릭(non-generic)타입간의 형변환은 가능하다. 다만 경고가 발생할 뿐이다.
Box box = null;
Box<Object> objBox = null;
box = (Box)objBox ; // OK. 경고 발생
objBox = (Box<Object>)box; // OK. 경고 발생
- 대입된 타입이 다른 지네릭 타입 간에는 형변환이 불가능하다.
Box<Object> objBox = null;
Box<String> strBox = null;
objBox = (Box<Object>)strBox; // 에러
strBox = (Box<String>)objBox; // 에러
- <? extends Object>로는 형변환이 가능하다.즉, 매개변수에 다형성이 적용 될 수 있다.
Box< ? extends Object> wBox = new Box<String>();
'Java' 카테고리의 다른 글
Java - 애너테이션이란? (0) | 2023.03.13 |
---|---|
Java - 열거형(enum) (0) | 2023.03.09 |
Java - 제한된 지네릭 클래스 & 와일드 카드 (0) | 2023.03.07 |
Java - 지네릭스(Generics) (0) | 2023.03.06 |
Java - Math클래스 (0) | 2023.03.02 |