有人可以发布此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。

10-06 13:45