Java04 :: [윤열프]제네릭1-2
* 제네릭 클래스의 타입 인자 제한하기
특정 클래스에서 인스턴스를 참조하게 되면 어떤 클래스 인스턴스를 참조하는것인지 알 수 없다. 그래서
인터페이스로 제한하는 방식이 있다.
1 2 3 4 5 6 7 8 9 10 11 | interface function{ public String fun(); } class Bo<T extends function>{ T ob; public T get(){ System.out.println(ob.fun); //가능하다. } } | cs |
* 제네릭 메소드의 정의
메소드 뿐만 아니라 클래스 에서도 제네릭 메소드를 정의하는것이 가능하다. 핵심은 타입 매개변수를 표시해주는 것인데
1 | public static <T> Bo<T> makeBox(T o) //<T>는 T가 타입 매개변수임을 알린다. | cs |
1 2 | Bo<String> sBo = BoFa.<String>makBo("sw"); Bo<String> sBo = BoFa.makBo("sw"); | cs |
제네릭 메소드 호출 시 위와 같이 표현하지만 생략된 채로도 사용할 수 있다.
* 제네릭 메소드의 제한된 타입 매개변수 선언
제네릭 클래스정의 시 타입 제한이 제네릭 메소드 호출 시 타입 인자를 제한할 수 있다.
1 2 3 4 | public static <T extends Number> Bo<T> makeBo(T o){ System.out.println(o.intValue()); } | cs |
관련된 문제 하나를 풀어보고 포스팅을 마무리 한다.
1 2 3 4 5 | public static <T extends Number> void swapBo(Bo<T> a,Bo<T> b){ T temp = a.get(); a.set(b.get()); b.set(temp); } | cs |
void 자리에 Box<T>를 자꾸 줘서 void로 바꾸는데 시간이 걸렸다.
'Java' 카테고리의 다른 글
Java06 :: [윤열프]실행 흐름의 컨트롤 (0) | 2019.03.01 |
---|---|
Java05 :: [윤열프] Operators (0) | 2019.02.28 |
Java03 :: [윤열프]제네릭1 (0) | 2019.02.25 |
Java02 :: [윤열프]자바의 기본 클래스 (0) | 2019.02.22 |
Java01 :: [윤열프]Java Chapter1~3 (0) | 2019.02.21 |
댓글
이 글 공유하기
다른 글
-
Java06 :: [윤열프]실행 흐름의 컨트롤
Java06 :: [윤열프]실행 흐름의 컨트롤
2019.03.01 -
Java05 :: [윤열프] Operators
Java05 :: [윤열프] Operators
2019.02.28 -
Java03 :: [윤열프]제네릭1
Java03 :: [윤열프]제네릭1
2019.02.25 -
Java02 :: [윤열프]자바의 기본 클래스
Java02 :: [윤열프]자바의 기본 클래스
2019.02.22