제너릭 사용 시 장점
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 |