任何人都可以发布这个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
取消为输入参数。
答案 0 :(得分:2)
如果没有Class
实例来指定实例所属的类,则无法在Java中创建实例 - 除了匿名类(参见下文)。您可以将该类实例作为参数获取,或将其隐藏在岩石下,或将其从海洋中捕获,但您必须在运行时将其 。与泛型相关联的类将通过类型擦除删除,并且不存在。
我不知道来自stringbeans的VB.NET,但在某些情况下,您可能正在寻找一个匿名类。
new IRepoDocument() { ......fill in code };
在这种情况下,根本没有<T>
,返回类型只是IRepoDocument。