Java中的通用方法,语法

时间:2012-01-22 11:39:18

标签: java generics

第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. } }    

4 个答案:

答案 0 :(得分:3)

<C extends Cat>指定useMe有一个通用参数C,必须扩展Cat

其返回类型为Mixer<? super Dog>?表示wildcard

答案 1 :(得分:3)

第一个通用参数规范<C extends Cat>使useMe是一个参数化的通用方法,参数C来自CatCat本身。

第二个通用参数规范<? super Dog>引用方法的返回类型,它是参数化的Mixer,其中唯一的泛型参数是DogDog类的超类本身。

因此,第6行表示:useMe是一个参数化的通用方法,C来自Cat(或Cat本身)。该方法采用类型为AC的两个参数,并返回类型Mixer参数化为超类型Dog(可能Dog本身)。

答案 2 :(得分:2)

<C extends Cat>不是返回类型。 Mixer<? super Dog>是。 前者仅指定用于指定c的类型。

答案 3 :(得分:2)

不,返回类型为Mixer<? super Dog>,方法本身是一个泛型参数,使用泛型参数C,可以扩展Cat的任何类,并用作参数C c