有人可以发布此VB.NET代码的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
作为输入参数。 最佳答案
如果没有Class
实例,则无法在Java中创建实例来指定该实例所属的类-匿名类除外(请参见下文)。您可以将该类实例作为参数,也可以将其隐藏在岩石下,或者从海洋中捞出来,但必须在运行时使用它。与泛型关联的类将通过类型擦除删除,并且不存在。
我从stringbeans中不了解VB.NET,但是在某些情况下,您可能正在寻找一个匿名类。
new IRepoDocument() { ......fill in code };
在这种情况下,根本没有
<T>
,返回类型就是IRepoDocument。