[英]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.