2012-01-22 6 views
2

6 번 줄에는 어떤 현상이 발생합니까? <C extends Cat>이 사용의 반환 유형입니다. 맞습니까? <? super Dog>의 기능은 무엇입니까?Java의 일반적인 메소드

2. class Animal { } 
3. class Dog extends Animal { } 
4. class Cat extends Animal { } 
5. public class Mixer<A extends Animal> { 
6. public <C extends Cat> Mixer<? super Dog> useMe(A a, C c) { 
7. //Some code 
8. } }  
+0

나는 useMe가 귀하의 방법이라고 생각합니다. 이 경우에는 믹서 에 잘못되었습니다. –

답변

3

<C extends Cat>useMeCat를 확장해야 하나 개의 일반 파라미터 C을 갖는 것을 지정한다.

반환 유형은 Mixer<? super Dog>입니다. ?wildcard을 나타냅니다.

+0

감사! 여기에 하나 이상의 일반 매개 변수를 사용하는 방법을 알려주시겠습니까? 쉼표로 구분하여 작동하지 않습니다. (, 와 같이) – onlinenaman

+1

@onlinenaman :''. –

2

<C extends Cat>은 반환 유형이 아닙니다. Mixer<? super Dog>입니다. 전자는 c 유형을 지정하는 경우에만 지정됩니다.

2

없음 리턴 형은 Mixer<? super Dog>이고, 방법 자체는 일반 변수 C를 사용하는 일반적인 방법이다 수 Cat 연장 및 파라미터 C c

3

제 일반적인 파라미터로서 사용되는 모든 클래스 사양 <C extends Cat>은 을 Cat에서 파생되거나 Cat에서 파생되는 매개 변수 C으로 매개 변수화 된 일반 메서드로 만듭니다.

제 일반 파라미터 사양 <? super Dog>는 단독 일반 파라미터 Dog 또는 Dog 클래스 자신의 수퍼 클래스 인 매개 변수화 Mixer되는 메소드의 반환 유형을 말한다.

따라서, 라인 6은 의미가 useMeCCat로부터 도출 (또는 Cat 자체 임)로 매개 변수화하는 일반적인 방법이다. 이 메서드는 AC 유형의 두 인수를 취하고 Dog (가능하면 Dog 자체)의 수퍼 유형으로 매개 변수화 된 Mixer 유형을 반환합니다.

관련 문제