자바/자바팁
제너릭(generic) 이해하기
행복한 수지아빠
2011. 12. 6. 16:16
반응형
출처 : http://take0415.blog.me/60128721068
public class Sample2 {
public class Sample2 {
public Sample2() {
}
public static void main(String[] args) {
Tmp<String> tmp1 = new Tmp<String>();
tmp1.setTmp(" s t r i n g ");
System.out.println(tmp1.getTmp());
Tmp<Integer> tmp2 = new Tmp<Integer>();
tmp2.setTmp(1);
System.out.println(tmp2.getTmp());
}
}
class Tmp<T> {
private T tmp = null;
public T getTmp() {
return tmp;
}
public void setTmp(T tmp) {
this.tmp = tmp;
}
}
이런 야리꾸리한 허접스런 티가 나는 클래스가 있다고 치자.
언듯 생각하면 제네릭의 원리는 컴파일러가 내부에서 Tmp<Integer> 와 Tmp<String> 의 각각의 클래스를 생성했을 것도 같지만
이렇게 되면 만약 여러개의 형을 사용했을 때 계속해서 코드는 증가하고 형 또한 증가할 것이다.
자바의 컴파일러는 제네릭을 만났을 때 아예 삭제 시켜 버리고 캐스팅이 필요한 곳에 캐스팅을 추가하는 방식으로 되어 있다.
예를 들자면
Tmp<String> tmp1 = new Tmp<String>();
tmp1.setTmp(" s t r i n g ");
System.out.println(tmp1.getTmp());
이 부분이
Tmp tmp1 = new Tmp();
tmp1.getTmp(" s t r i n g ");
(String) tmp1.getTmp();
[출처] 자바의 Generic의 원리|작성자 정서
반응형