gpt4 book ai didi

java - Java 中的泛型工厂

转载 作者:行者123 更新时间:2023-11-30 09:38:14 26 4
gpt4 key购买 nike

任何人都可以发布此 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 中创建实例instance 指定实例属于哪个类——匿名类除外(见下文)。您可以获取该类实例作为参数,或将其隐藏在岩石下,或将其从海中捞出,但您必须在运行时拥有它。与泛型关联的类通过类型删除被删除,只是不存在了。

我不知道来自 stringbeans 的 VB.NET,但在某些情况下,您可能正在寻找匿名类。

new IRepoDocument() { ......fill in code };

在这种情况下,没有 <T>根本上,返回类型只是 IRepoDocument。

关于java - Java 中的泛型工厂,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10191350/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com