[英]Generic method in Java, syntax
第6行发生了什么? <C extends Cat>
是useMe的返回类型,对吧? 什么<? super Dog>
<? 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. } }
<C extends Cat>
指定useMe
有一个通用参数C
,它必须扩展Cat
。
它的返回类型是Mixer<? super Dog>
Mixer<? super Dog>
。 的?
表示通配符 。
第一个通用参数规范<C extends Cat>
使useMe
成为使用参数C
参数化的通用方法,参数C
来自Cat
或Cat
本身。
第二个通用参数规范<? super Dog>
<? super Dog>
指的是方法的返回类型,它是一个参数化的Mixer
,其中唯一的泛型参数是Dog
或Dog
类本身的超类。
因此,第6行意味着: useMe
是一个通用方法,使用从Cat
(或Cat
本身)派生的C
参数化。 该方法采用A
和C
类型A
两个参数,并返回类型Mixer
参数化的超类型Dog
(可能是Dog
本身)。
<C extends Cat>
不是返回类型。 Mixer<? super Dog>
Mixer<? super Dog>
是。 前者仅指定用于指定c的类型。
不,返回类型是Mixer<? super Dog>
Mixer<? super Dog>
,方法本身是一个泛型方法,它使用泛型参数C
,可以扩展Cat
任何类,并用作参数C c
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.