2012-01-22 30 views
2

第6行發生了什麼? <C extends Cat>是useMe的返回類型,對不對? <? super Dog>是做什麼用的?Java中的通用方法,語法

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

我覺得useMe是你的方法。 如果是這種情況,那麼你在混音器上是錯誤的。 –

回答

3

<C extends Cat>指定useMe具有一個通用的參數,C,其必須延伸Cat

其返回類型爲Mixer<? super Dog>?表示wildcard

+0

謝謝!你能告訴我如何在這裏使用多個通用參數嗎?用逗號分隔不起作用。 (如) – onlinenaman

+1

@onlinenaman:''。 –

2

<C extends Cat>不是返回類型。 Mixer<? super Dog>是。 前者僅被指定爲指定c的類型。

2

否,返回類型爲Mixer<? super Dog>,並且該方法本身是使用一個通用的參數C,一個通用的方法,其可以延伸Cat,並且被用作一個參數C c

3

第一通用參數的任何類規範<C extends Cat>使useMe成爲通過參數C進行參數化的通用方法,其來自Cat或者是Cat本身。

第二通用參數規範<? super Dog>是指該方法的其是參數化Mixer其中唯一的通用參數是一個超類或DogDog本身的返回類型。

因此,第6行是指:useMeCCat導出(或成爲Cat本身)參數化的通用方法。該方法採用類型爲AC的兩個參數,並返回使用超類型Dog(可能爲Dog本身)參數化的返回類型Mixer