2012-08-23 63 views
5

如果我有一個構造函數一個parametized泛型類:的Java getConstructor(種)parametised類型

public class Foo { 
    public Foo(Map<String, Object> data) { 
     ... 
    } 
} 

...我怎麼引用parametized Map的類,如果我要打電話:

Constructor constructor = cls.getConstructor(/*the Map class! */) 

(其中cls是Foo類)。

我想要做的事,如:

Constructor constructor = cls.getConstructor(Map<String,Object>.class); 

...但這不起作用。

我確定有一個簡單的答案!

+1

退房Java的這個鏈接[「類型擦除」(http://code.stephenmorley.org/articles/java-generics-type-erasure/)。另見[反映通用類型](http://thekevindolan.com/2010/03/reflecting-generic-types/)。 – paulsm4

+0

啊是鍵入刪除,我想過更多關於這個,實際上閱讀Eclipse想告訴我什麼,我可能會想出來!無論如何,感謝您的鏈接。 – Mikesname

回答

11

在運行時,這樣的:

Map<String,Object> 

實際上只是一個地圖,不帶任何參數。

調用

cls.getConstructor(Map.class) will be enough 
4

可以僅由地圖類型引用構造。通用參數被擦除的運行時間:

Constructor constructor = Foo.class.getConstructor(Map.class); 
相關問題