Java Generic
다양한 타입을 사용하기 위함
컴파일 시간에 타입을 보호하기 위함 (Object로 다양한 타입을 담을 경우 런타임 에러의 여지가 있다)
Generic class 정의 및 사용
public class MyClass<E,T>{
E data;
T operator;
public void setData(E data){
this.data = data;
}
public void setOperator(T operator){
this.operator = operator;
}
MyClass <Integer, String> mData = new MyClass<Integer, String>();
mData.setData((Integer)10);
mData.setOperator("add");
Generic Type의 제한
특정한 타입만 사용하고 싶을 경우 아래와 같이 사용 가능하다
public class MyClass(T extends String>{
...
}
위의 경우 예를 들어 T data 변수를 쓸 때 data.getByte() 등의 String 함수를 쓰고 싶을 경우
Generic Method
public <T> void putData(T data){
...
}
public static <T> void printObject(T data){
...
}
Generic Type을 확정할 수 없는 경우
generic을 사용할 때는 타입을 지정하지만, 메소드 등에 인자로 사용할 경우 타입을 특정하기 어렵다
그럴 경우 <?> 를 사용하여 타입을 특정하지 않는다
public printLog(MyClass<?> p){
System.out.println("operator : " + p.getOperator() + ", data : " + p.getData());
}
댓글