출처 : 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의 원리|작성자 정서
'자바 > 자바팁' 카테고리의 다른 글
자바 압축 관련 정보 (0) | 2012.01.10 |
---|---|
JSP 및 JAVA로 오직 POST 방식으로 받을때 (0) | 2011.12.13 |
SWT Deginer 사용하기 (0) | 2011.11.02 |
AD인증 자바코드 (0) | 2011.11.02 |
AD(ldap) 테스트용 Java 코드 (0) | 2011.11.02 |