2013-03-17 18 views
3

我有我的方法:如何使用類作爲通用型標記

myMethod(Class class){} 

我想傳遞給所有的降班這種方法MyClass的,所以把它改爲:

myMethod(Class<MyClass> class){} 

而且電話是:

myMethod(MyOtherClassExtendingMyClass.class) 

然後,我有編譯器錯誤:

The method myMethod(Class<MyClass>) in the type XXX is not applicable 
for the arguments (Class<MyOtherClassExtendingMyClass>) 

如何確保只有MyClass及其所有降級類將被允許作爲此方法的參數?

+1

請編輯問題的標題:-) – 2013-03-17 11:49:32

回答

8

使用上界通配符:

myMethod(Class<? extends MyClass>) {} 

你可能要捕獲的通配符,太:

<T extends MyClass> void myMethod(Class<T> klass) {} 

這時候你可以參考T在體內。

+0

+1:HTTP://文檔作爲JLS的相關詳細。 oracle.com/javase/specs/jls/se7/html/jls-4.html#d5e2547 – Aubin 2013-03-17 11:53:52

1

去你的問題,我認爲你需要方法myMethod的followng聲明:

myMethod(Class<? extends MyClass> clazz)