Java

[Advanced JAVA] Java Generic

루에 2014. 12. 26. 14:22
반응형

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());

}

반응형