如何在generics中将一个整数元素添加到通配符的ArrayList中?

我有一个ArrayList通用通配符类型,它将Number作为extends。 我试图将整数值添加到ArrayList。

但它给了我一个错误的说法

ArrayList numberList = new ArrayList(); numberList = new ArrayList(); numberList.add(100); 

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

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

 ArrayList numberList = new ArrayList(); numberList = new ArrayList(); numberList.add(100); 

错误是:

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

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

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

您不能将整数添加到列表中,因为它可能是Float列表,而不是Integer列表。

你可以做:

 ArrayList numberList = new ArrayList(); numberList.add(100); 

要不就

 ArrayList numberList = new ArrayList(); numberList.add(100); 

您可以使用;

  ArrayList  numberList = new ArrayList(); Number number = 1; numberList.add(number); or numberList.add(1); 

你应该做这样的事情

 ArrayList numberList = new ArrayList(); numberList.add(100); 

对于java 8,你可以使用stream(),

 // to resolve your read problem cause by  ArrayList arrayList = new ArrayList(); arrayList.add(100); List list = arrayList.stream().map(e->(Integer) e).collect(Collectors.toList()); System.out.println(list); 

可能的解决方法:

 List numberList = new ArrayList(); List integerList = new ArrayList<>(): integerList.add(100); numberList = integerList;