第6行发生了什么? <C extends Cat>
是useMe的返回类型,对吗? <? super Dog>
做了什么?
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 :(得分:3)
<C extends Cat>
指定useMe
有一个通用参数C
,必须扩展Cat
。
其返回类型为Mixer<? super Dog>
。 ?
表示wildcard。
答案 1 :(得分:3)
第一个通用参数规范<C extends Cat>
使useMe
是一个参数化的通用方法,参数C
来自Cat
或Cat
本身。
第二个通用参数规范<? super Dog>
引用方法的返回类型,它是参数化的Mixer
,其中唯一的泛型参数是Dog
或Dog
类的超类本身。
因此,第6行表示:useMe
是一个参数化的通用方法,C
来自Cat
(或Cat
本身)。该方法采用类型为A
和C
的两个参数,并返回类型Mixer
参数化为超类型Dog
(可能Dog
本身)。
答案 2 :(得分:2)
<C extends Cat>
不是返回类型。 Mixer<? super Dog>
是。
前者仅指定用于指定c的类型。
答案 3 :(得分:2)
不,返回类型为Mixer<? super Dog>
,方法本身是一个泛型参数,使用泛型参数C
,可以扩展Cat
的任何类,并用作参数C c