04.제네릭스(Generics)
by SANGGI JEON
제네릭스(Generics)
- 컴파일시 타입을 체크해 주는 기능
- 객체의 타입 안정성을 높이고 형변환의 번거로움을 줄여줌
    - 하나의 컬렉션에는 대부분 한 종류의 객체만 저장
 
- 장점
    - 타입 안정성을 제공
- 타입체크와 형변환을 생략할 수 있으므로 코드가 간결해 진다.
 
import java.util.ArrayList;
class Fruit				  { public String toString() { return "Fruit";}}
class Apple extends Fruit { public String toString() { return "Apple";}}
class Grape extends Fruit { public String toString() { return "Grape";}}
class Toy { public String toString() { return "Toy";}}
class Box<T>{
	ArrayList<T> list = new ArrayList<T>();
	void add(T item)	{ list.add(item); }
	T get(int i)		{ return list.get(i); }
	int size()			{ return list.size(); }
	public String toString() { return list.toString();}
}
public class FruitBoxEx {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Box<Fruit> fruitBox = new Box<Fruit>();
		Box<Apple> appleBox = new Box<Apple>();
		Box<Toy> toyBox = new Box<Toy>();
//		Box<Grape> grapeBox = new Box<Apple>(); // 에러. 타입 불일치		
		fruitBox.add(new Fruit());
		fruitBox.add(new Apple());
		appleBox.add(new Apple());
		appleBox.add(new Apple());
//		fruitBox.add(new Toy()); // 에러. Box<Apple>에는 Apple만 담을 수 있음
		toyBox.add(new Toy());
//		toytBox.add(new Apple()); // 에러. Box<Toy>에는 Toy만 담을 수 있음
		System.out.println(fruitBox);
		System.out.println(appleBox);
		System.out.println(toyBox);
	}
}
Subscribe via RSS
