当前位置: 首页 > 面试题库 >

无法实例化泛型中的类型

拓拔俊德
2023-03-14
问题内容

我有这堂课

public class Tree<T> {

    //List of branches for this tree
    private List<Tree<? super T>> branch = new ArrayList<Tree<? super T>>();
    public Tree(T t){ this.t = t; }
    public void addBranch(Tree< ? super T> src){ branch.add(src); }
    public Tree<? extends T> getBranch(int branchNum){
        return (Tree<? extends T>) branch.get(branchNum);
    }


    private T t;

}

我正在尝试使用此方法在此类之外创建变量

public static void main(String[] args){ 
        Tree<? super Number> num2 = new Tree<? super Number>(2);
    }

这给了我这个错误

Cannot instantiate the type Tree<? super Number>

问题答案:

在实例化泛型时,应将其替换为相应的对象。

例如:

 Tree<Integer> num2 = new Tree<Integer>(2);


 类似资料:
  • 问题内容: 我想在Java中创建泛型类型的对象。请提出如何实现相同的建议。 注意:这似乎是一个简单的泛型问题。但是我打赌..不是。:) 假设我的类声明为: 问题答案: 你必须添加异常处理。 你必须在运行时传递实际类型,因为它不是编译后字节码的一部分,因此,没有显式提供它就无法知道它。

  • 问题内容: 我知道Java的泛型在某种程度上逊于.Net。 我有一个泛型类,我确实需要使用无参数构造函数实例化。如何解决Java的局限性? 问题答案: 一种选择是传递(或你感兴趣的任何类型-以任何方式指定适当的引用)并将该值保留为字段: 另一种选择是具有“工厂”接口,然后将工厂传递给泛型类的构造函数。这更加灵活,你无需担心反射异常。

  • 问题内容: 当我尝试运行此代码时: 我收到此错误: 我不明白为什么我无法实例化课程…在我看来似乎是对的… 问题答案: 是一个接口,因此您无法直接实例化它。您可以实例化一个具体的子类,例如:

  • 问题内容: 我试图创建一个字符串集,其中填充了哈希表中的键,以便for- each循环可以遍历该Set并将默认值放入哈希表中。我仍在学习Java,但是我尝试做的方式不是有效的语法。有人可以演示这样做的正确方法,并解释为什么我的方法行不通,而他们的方法行得通。 问题答案: 不是类,而是接口。 因此,基本上可以仅实例类实现(,或) 例如 :

  • 问题内容: 我的问题是这样的: 为什么不能使用类Class的new T()和newInstance()实例化泛型? 问题答案: 您需要使用反射(),因为在编译时需要链接其构造函数的类是未知的。因此,编译器无法生成链接。

  • 问题内容: 我有以下代码: 错误: 是我的EJB项目中的一个实体。为什么我收到此错误? 问题答案: 是一个接口。接口无法实例化。只能实例化具体类型。你可能想使用,这是一个 实现 了的接口。