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

如何在泛型的通配符ArrayList中添加整数元素?

羊毅庵
2023-03-14
问题内容

我有一个ArrayList通用通配符类型,它以Number为扩展名。我正在尝试将整数值添加到ArrayList中。

但是它给我一个错误,说

ArrayList<? extends Number> numberList = new ArrayList<Number>();
    numberList = new ArrayList<Integer>();
    numberList.add(100);

类型中的方法add(int,capture#2-of?)ArrayList<capture#2-of ?>不适用于参数(int)。

我也尝试过这种方式,但是给了我同样的错误

ArrayList<?> numberList = new ArrayList<Number>();
    numberList = new ArrayList<Integer>();
    numberList.add(100);

错误是:

类型中的方法add(int,capture#2-of?)ArrayList<capture#2-of ?>不适用于参数(int)


问题答案:

你不能 该? extends部分基本上告诉编译器:它是某种类型,我不知道,但是扩展了Number。

因此,编译器无法保证您要添加的任何内容的类型都与未知类型兼容。因此,您无法向此类集合添加任何内容。



 类似资料:
  • 我有一个ArrayList泛型通配符类型,它以Number作为扩展。我试图将整数值添加到ArrayList中。 方法add(int,capture#2-of?)在类型中,不适用于参数(int)

  • 在android studio中,我试图放入一个整数的ArrayList中,其中包含标签id如下所示

  • 我想在java中创建一个哈希表类,将键和值对存储在链表的ArrayList中 然后,我想创建一个链接列表对象,然后可以使用该对象在arrayList的每个索引内创建一个新的链接列表。为此,我声明: 然后我设置了add函数以将元素添加到LinkedList的第一个索引中,该索引位于arrayList的哈希键索引中: 每次运行此代码时,我都会收到一个错误,其中我的索引为7而我的大小为0。这会导致错误:

  • 注意:“else”语句只是出于测试目的,似乎表明if语句没有正常工作,因为当我测试时,它总是被触发。

  • 问题内容: 我对Java中的通用通配符有两个疑问: 和之间有什么区别? 什么是有界通配符,什么是无界通配符? 问题答案: 在你的第一个问题中,并且是有界通配符的示例。无限制的通配符看起来像,基本上就是<? extends Object>。宽松地表示泛型可以是任何类型。有界通配符(或)通过说它必须扩展特定类型(称为上限)或必须是特定类型的祖先(称为下限)来对类型进行限制。

  • 所以我在阅读泛型以重新熟悉这些概念,尤其是在涉及通配符的地方,因为我很少使用或遇到通配符。从我的阅读中,我不明白他们为什么使用通配符。下面是我经常遇到的一个例子。 你为什么不这样写: oracle网站上的另一个示例: 为什么这不是写成 我错过什么了吗?