본문 바로가기
Java

[Advanced JAVA] Java Generic

by 루에 2014. 12. 26.
반응형

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

}

반응형

댓글