当前位置: 首页 > 知识库问答 >
问题:

在java中创建List对象并获取编译器错误

孙修贤
2023-03-14
List<Number> list = new ArrayList<Integer>();

我试图创建这个对象,但我得到了一个编译器错误,但我没有意义,因为整数扩展了数字,所以它应该可以工作。

共有2个答案

蒯翰墨
2023-03-14

你能告诉我你得到的编译器错误吗?我认为,您要么必须将列表切换为整数,要么如果Number对象是Integer类的扩展,您应该能够将Integer更改为Number,并具有相同的特性。

List<Number> list = new ArrayList<Number>();

我不确定你想做什么,但这在过去对我很有效,这样ArrayList的行为应该和Number类的定义一样。

甄阳朔
2023-03-14

不泛型是不变的。也就是说,只有类型本身可以。那是因为。。。必须这样。想象一下,它像你想要的那样工作:

List<Integer> ints = new ArrayList<Integer>();
List<Number> list = ints;
list.add(new Double(5.5));
Integer i = ints.get(0);

一行一行地检查它。该代码最终试图将一个双对象放入一个整型引用中,而这个引用刚刚被破坏了。

您可以选择协方差:

List<? extends Number> list = new ArrayList<Integer>();

很好用。但是,您不能调用。在这样的列表中添加()。

 类似资料:
  • 我有一份产品清单 我的产品类别是 我想要两个列表:第一个只返回多次出现的产品,第二个只返回一次出现的产品 我正在使用Java8中的流 但ProductMorethance不会返回重复的产品= 最好的方法是什么?

  • 我试图为Java中的abject数组获取用户输入。但它工作不正常。我创建了第一个类并声明了所有属性,还创建了构造函数、geter和seter。但是当我在数组中保存对象时,它不能正常工作

  • 编辑问题以包括所需的行为、特定问题或错误,以及再现问题所需的最短代码。这将帮助其他人回答这个问题。 我试图在Java中获取abject数组的用户输入。但是它不能正常工作。我创建了第一类并声明了所有属性,创建了构造函数、geter和seters。但是当我在数组中保存服从对象时,它不能正常工作

  • ***更新**** 所以首先我要尝试哈希。为了使其简短,我创建了一个linkedlsit类,它接受一个泛型参数。我有一个哈希表类,我试图在其中创建(我相信)一个linkedlist指针数组(请记住,linkedlist采用泛型类型) 因此,在我的哈希表类中,我有一个私有变量 其中SLL是我的链表,Entry是保存键(字符串)和值(int)的对象,并且绑定使其成为指针数组。 在哈希表构造函数中,我这

  • 问题内容: 我们知道throw的规则是,其中必须是Throwable类型的对象或Throwable的子类。 简单类型(例如int或char)以及不可Throwable类(例如String和Object)不能用作异常。是表示空值的特殊Java文字。 那么为什么要在此代码中进行编译? 问题答案: 根据语言规范,一条语句定义为: 如果计算结果为,则抛出a。特别, 如果对 Expression的 求值正常