繁体   English   中英

Java中的通用方法,语法

[英]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来自CatCat本身。

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

因此,第6行意味着: useMe是一个通用方法,使用从Cat (或Cat本身)派生的C参数化。 该方法采用AC类型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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM