我見過代碼:如何將參數傳遞給需要Class <?的方法擴展東西>?這樣
void foo(Class<? extends SomeInterface> clazz)
我有一個類,如:
class ClassA implements SomeInterface
當我嘗試:
ClassA a = new ClassA();
foo(a);
的Eclipse給像「方法不適用」。
我錯過了什麼嗎?
我見過代碼:如何將參數傳遞給需要Class <?的方法擴展東西>?這樣
void foo(Class<? extends SomeInterface> clazz)
我有一個類,如:
class ClassA implements SomeInterface
當我嘗試:
ClassA a = new ClassA();
foo(a);
的Eclipse給像「方法不適用」。
我錯過了什麼嗎?
foo
方法將Class
對象作爲參數,而不是該類的實例。
嘗試使用類文字來代替:
foo(ClassA.class);
ClassA.class
是類文字的ClassA
類,這是一個Class<ClassA>
,符合該參數的描述Class<? extends SomeInterface>
。
對於foo(a);
編譯的foo
簽名會有所不同:
void foo(SomeInterface bar)
Class
本身就是一個對象,並foo(
需要Class
對象的綁定的通配符。
如果ClassA
確實實現/延伸SomeInterface
(其中一個或另一個,您使用不同的術語),然後通過ClassA.class
。關鍵字class
指定獲得類對象。
已解決。謝謝您的幫助。 – NSF