任何人都可以發佈此VB.NET代碼的Java版本嗎?Java中的泛型工廠
Public Function FetchDoc(Of T As {New, IRepoDocument})(ByVal docId As String) As IRepoDocument Implements IDocRepository.FetchDoc
Dim repoDoc As New T
//some code to init repoDoc
Return repoDoc
End Function
這個函數接受和創造實現IRepoDocument
任何類的實例,並且有一個無參數的構造函數。
我發現的唯一方法是:
public <T extends IRepoDocument> IRepoDocument FetchDoc(String idDoc, Class<T> clazz)
throws InstantiationException, IllegalAccessException
{
return clazz.newInstance();
}
但我想抑制Class<T> clazz
作爲輸入參數。
所以你想要在ClassLoader中搜索任何實現IRepoDocument並實例化它的類? – 2012-04-17 12:39:08
你想如何確定你真正想要的課程? – 2012-04-17 12:41:59
如果沒有Java中的Class參數,沒有辦法做到這一點。 – 2012-04-17 12:42:24