2011년 6월 8일 수요일

제네릭의 본질에 대하여..

흔히들 Java기초를 공부하는 동안 Generic문법을 피상적으로 공부하게 됩니다.
예를들어

List list = new ArrayList();

방식의 코드입니다.

그럼 이것이 Generic문법인가요? 아닙니다.

Generic은 코드를 작성할 때 형(타입)을 결정하는 것이 아니라,
코드가 활용될 때 타입을 결정하는 방식이라는 겁니다.

예를 들어 볼까요?


public class GenericEx {

public void add(E p1, K p2){

System.out.println(p1);
System.out.println(p2);

}
}


위의 코드에 대한 해석은 나중에 E, K라는 타입을 결정해 주겠다는 코드입니다.
이것이 객체화 될 때는 다음처럼 다양한 방식의 코드를 생성해 줄 수 있게 됩니다.

GenericEx ex1 = new GenericEx();

ex1.add("AAAAAAAAAA", 1234);

GenericEx ex2 = new GenericEx();

ex2.add( 1234.12, 1234F);


코드를 보면 나중에 파라미터의 타입을 전혀 다르게 결정하는 모습을 볼 수 있습니다.

사실 제네릭은 자바의 기존의 Object타입의 모호성과 오버로딩의 제약을 해결하기 위한 하나의 방식이라고 보는 것이 더 좋지 않을까 싶습니다.


--------------------------------------------
한동안 정신적으로, 육체적으로 힘든 시기였습니다.
때문에 이 블로그 작성역시 소홀했습니다.
아직 온전하지 않은 육체와 정신이지만 다시 노력해 보려 합니다.

댓글 없음:

댓글 쓰기