java - 如何在类中保存 Class<T> 引用?

标签 java generics

就泛型而言,我很菜鸟。再加上java的混淆编译错误“无法从java.lang.Class转换为java.lang.Class”没有帮助

这是我的课

public class XMLParser<T> {

private static XMLParser reference=null;
String rootNode;
String requiredNode;
List<String> members;
Class<T> targetClass;


private XMLParser()
{

}

public static XMLParser getInstance()
{
    if(reference==null)
        reference= new XMLParser();
    return reference;
}


public <T> T  parse(Class<T> target, String inputString, String rootNode, String requiredNode,
        List<String> members) {

    this.rootNode=rootNode;
    this.requiredNode=requiredNode;
    this.members=members;
    this.targetClass=target; //compile error

我不明白这是怎么回事。我想保留对输入“目标”的全局引用,因为这个“目标”将在类中的很多方法中使用。

我该怎么办?

最佳答案

删除 parse 中声明的类型变量方法

public <T> T  parse(Class<T> target, String inputString, String rootNode, String requiredNode,
     // ^ get rid of this

那个<T> bit 声明一个新类型变量,该变量隐藏(具有相同名称)类名表达式中声明的类型变量。类型变量T这里和在类级别声明的无关。

关于java - 如何在类中保存 Class<T> 引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22140684/

相关文章:

java - 使用 Moxy 和 JerseyClient2 发出通用编码问题

java - 不能从静态上下文中引用内部类,但前提是外部类是通用的

java - 如何确保在 Java 中销毁 String 对象?

java - 如何将 ServletListener 限制为单个上下文?

java - Java 中 HashMap 中一个键的多个值

java - 创建通用 JavaBean 构建器

generics - 从通用约束 Dart 调用静态方法

java - 使用 Streams 将字符串列表映射到 HashMap

java - 文本查询匹配(棘手)

c# - 从泛型类继承时什么时候应该使用 new() 关键字?