Java/Java Concept

[Java] 제네릭 클래스

군우 2018. 3. 10. 19:33

제네릭 클래스

<T>


자료형의 안정성을 보장하고 구현을 용이하게 함


제네릭 메소드도 마찬가지로 

메소드의 <T> 타입으로 할 수 잇어서 T값이 언제 결정되냐면,

인스턴스 생성할 때가 아니고, 메소드를 호출할 때이다.


매개변수의 자료형 제한

public static <T extends AAA>  void myMethod(T param){..}


<T extends AAA>  얘가 클래스의 이름일경우 반드시 클래스를 구현해야하고


제네릭메소드 배열 전달

결론부터말하면  method(T[] arr){} . 이다.

t를 대시해서 배열이 올수있다. 배열도 인스턴스니까

method(T arry) 이렇게 사용하는데 

만약에 그 메소드안에  arr[i]이런식으로 호출한다면  안될 수 있다.

왜냐하면 T arr 이렇게한다는 뜻은 T 의 위치에 모든것이 올 수 있지만

배열이 아닌 것이오면 arr[i]여기에  올수 없는 문제가 발생한다

그러므로  배열인것중에 모든것이 와도된다는 뜻의 T[] 이렇게 메소드를

생성해야한다 .



와일드카드 <?>


FruitBox <? extends Apple> boundedBox;

- apple 상속하는 클래스의 인스턴스라면 무엇이든지 참조가능한

참조 변수를 선언함.


FruitBox <? extends Apple> boundedBox;

-apple 상속하는 클래스의 인스턴스라면 무엇이든지 참조 가능한

참조변수를 선언함