본문 바로가기
프로그래밍 놀이터/안드로이드, Java

[Java] Generic Type Tutorial.

by 돼지왕 왕돼지 2014. 1. 6.
반응형

 Java, Generic Type Tutorial.

 

[Java] Generic Type Tutorial.


Generic Type.


주로 Java Collection 에서 많이 사용한다.

Collection 에서는 어떤 자료를 담을지 알 수 없으므로 최상위 객체인 Object 형태로 저장 및 관리하도록 설계되어 있다. 하지만 이렇게 Object 로만 두게 되면, 일관성 있는 Type 을 유지할 수 없는 경우도 많이 생긴다. 일관성 있는 Type 을 유지하지 못하면, Runtime Error 에 마딱뜨릴 확률이 높아져서 좋지 않다. 이것을 해결하기 위해 Compile Time 에 원하지 않는 Type 이 들어가는 것을 방지하기 위해 고안 된 것이 Generic Type 이다.




Generic Class 정의


// T 라는 객체를 다루는 Container

public class Container<T>{

private T t;

public void set( T t ){

this.t = t;

}


public T get(){

return t;

}

}




Generic Class 생성.


Container<Integer> intergerContainer = new Container<Integer>();




Generic Type Parameters


타입 매개변수로는 T 이외에도 어떤 하나의 대문자를 사용하면 된다.

보통 사용되는 녀석들은..


E - Element

K - Key

V - Value

T - Type

N - Number

...







Generic Method


생성자를 비롯하여 메서드들도 Generic Type 을 사용할 수 있는데,

다음과 같이 return type 앞에 generic 을 표시해주어야 하며, generic 이 유효한 범위는 해당 method 가 불리는 시점이다.


public <Y> void genericTest( Y y ){

// do sth...

}




Generic Restriction.


Generic 을 받을 때 그냥 generic type 으로만 받으면 다시 Object 와 같은 녀석들이 올 수 있고, 그럼 별로 유용성이 없다. 조금 더 효율적으로 하기 위해서는 generic type 에 제한을 줄 수 있는데 다음과 같이 extends 를 써서 줄 수 있다.


public <Y extends MyView> void genericTest( Y y ){

// do sth...

}







Wild Card


? 는 알 수 없는 모든 타입을 정의할 수 있다.


? extends MyObject - MyObject 를 상속한 모든 객체를 일컷는다.

? super MyObject - MyObject 가 상속한 모든 객체를 일컫는다.






반응형

댓글