제너릭 사용 시 장점
1. 컴파일시 강한 타입체크
2. 타입변환을 제거
장점을 제너릭을 사용하지 않을 때와 제너릭을 사용했을 때
코드가 어떻게 달라지는지 직접 보면서 살펴보자.
제너릭을 사용하지 않고 클래스 정의
1 2 3 4 5 6 7 8 9 10 11 12 13 14  | public class NoGenericBox {     /*      * 제너릭을 사용하지 않은 클래스      * Object는 최상위 클래스로 어떤 타입이라도 담을 수 있다.      * 하지만 다른 타입의 변수에 담을려면 타입변환이 필요하다.      */     private Object object;     public void set(Object object) { this.object = object; }     public Object get() { return object; } }  | cs | 
제너릭을 사용하지 않은 객체에 String을 넣고 빼보기
1 2 3 4 5 6 7 8 9 10 11 12  | public class NoGenericExample {     public static void main(String[] args) {         NoGenericBox box = new NoGenericBox();         box.set("배");          //object에 '배'가 담김 --> Object타입         String fruit = (String)box.get();          //'배'를 String으로 형변환이 필요     } }  | cs | 
제너릭을 사용한 클래스 정의
1 2 3 4 5 6 7 8 9 10 11  | public class GenericBox<T> {     /*      * 제너릭을 이용한 클래스 정의      * 제너릭타입 T를 클래스 생성시 파라미터로 전달하여 형변환이 필요없다.      */     private T t;     public T get() { return t; }     public void set(T t) { this.t = t; } }  | cs | 
제너릭을 사용한 객체에 String 넣고 빼기
1 2 3 4 5 6 7 8 9 10 11 12  | public class GenericBoxExample {     public static void main(String[] args) {         GenericBox<String> box1 = new GenericBox<String>();         //제너릭을 이용한 객체 생성         box1.set("수박");         String fruit = box1.get();//제너릭으로 타입을 제한했기데 형변환이 필요없다.         GenericBox<Integer> box2 = new GenericBox<Integer>();         box2.set(5);         int count = box2.get();     } }  | cs | 
'Java' 카테고리의 다른 글
| [제너릭]와일드카드 타입 (0) | 2017.02.17 | 
|---|---|
| [제너릭]제너릭 메소드 (0) | 2017.02.16 | 
| Thread 상속으로 thread 생성 (0) | 2017.01.27 | 
| Runnable을 이용한 Thread 생성 방법들 (0) | 2017.01.25 | 
| 멀티 스레드 개념 (0) | 2017.01.25 |