2013-06-04 118 views
0

我在類中有以下方法。 AbstractModel是一個擴展這個類的類傳入的泛型類。方法:當前創建的傳遞的類的實例創建泛型方法,返回傳入的類的實例

public AbstractModel newInstance(Class<? extends AbstractModel> clazz){ 

    return injector.getInstance(clazz); 
} 

目前,我不得不這樣做。

Person person = (Person) em.newInstance(Person.class); 

我想知道如果我可以使用泛型刪除,我有鑄造將AbstractModel對象設置爲Person。理想情況下只是這樣的:

Person person = em.newInstance(Person.class); 

我不知道這是可能的,因爲我不是一個Person對象傳遞給該方法雖然。

回答

3

您可以將方法簽名更改爲以下 -

public <T extends AstractModel> T newInstance(Class<T> clazz) { 
+0

真棒。謝謝! – David

+0

不客氣。 –

+0

是胡蘿蔔中的一部分,作爲參數,然後是另一個T,返回的類是什麼? – David