제네릭
클래스나 메소드에 사용될 데이터 타입을 나중에 확장하는 것
기본적인 사용법
클래스
class Animal<T> {
private T info;
Animal(T info){
this.info=info;
}
public T getInfo() {
return info;
}
public void setInfo(T info) {
this.info = info;
}
}
public class Main{
public static void main(String[] args) {
Animal<String> animal=new Animal<String >("너구리");
}
}
메소드
public static <T> void swap(T a,T b){
T c=a;
a=b;
b=c;
}
참고로
T 자리에는 참조형만 올 수 있다 !!!
int, char ,, 안됨, wrapper 사용해야함
사용하는 이유
1. 코드의 중복을 제거 -편의성을 위해
2. 타입이 안전하지 않은 경우 -Object 지정시
그외에도 여러 이유로 데이터 타입을 확정시키고 싶지 않은 경우 ..
가능한 데이터 타입을 제한하고 싶을 때
extends 사용
-class 클래스명<T extends 클래스나 인터페이스>
super 사용
-부모를 제한 하는 것 ..