자료형이 정해지지 않았기 때문에 제네릭이 적용된 클래스에서는
메서드 구현이 아주 제한적이다. => 제네릭 클래스에서 원하는 기능 못 만듦
이러한 문제를 해결하기 위해 타입인자(T:정해지지 않은 자료형)를 제한하는 문법을 사용
public class Phone {
public void call(){
System.out.println("전화를 겁니다.");
}
}
class MobilePhone extends Phone{
public void sendMsg(){
System.out.println("메시지를 전송합니다.");
}
}
class SmartPhone extends MobilePhone{
public void playApp(){
System.out.println("앱을 실행합니다.");
}
}
< T extends Phone> : T를 Phone 클래스나 Phone 클래스를 상속한 클래스만 허용하도록 타입인자 제한
public class PhoneBox<T extends Phone> {
private T data;
public void phoneTest(T data){
this.data=data;
data.call(); // phone 클래스를 받아왔기 때문에 가능함
// data.sendMsg();
}
}