作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
任何人都可以发布此 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/
我是一名优秀的程序员,十分优秀!