2015-05-28 36 views
-1

爲什麼我不能使用參數化方法(如method1(Foo1))?我只想傳遞擴展Foo類的類。調用通用方法

public class Foo1 extends Foo { 
} 


public class Foo2 { 

    void method1(Class<Foo>){ 
    } 

} 
+0

究竟是什麼問題? – Radiodef

回答

3

讓你的方法接受一個參數化類型的通用方法:

<T extends Foo> void method1(Class<T> arg) { 
    ... 
} 

,或者更簡潔:

void method1(Class<? extends Foo> arg) { 
    ... 
} 
+0

謝謝,這有助於:) – mhuta

+0

'T'是不必要的。 'void method1(Class <?extends Foo> arg)'等價 – newacct

+0

@newacct - 確實相同(除非編譯器錯誤消息,如果有人試圖用不兼容的類型調用'method1')。作爲一個風格問題,我傾向於支持命名泛型參數,但這裏沒有太大的區別。 –