我如何从List <T> elements = new ArrayList <>();中获取一个元素?

时间:2019-06-17 17:15:40

标签: java list arraylist icomparable

我想从列表中获取元素。 我正在处理一个项目,类名称旁边是: <T extends Comparable<T>>写。

我确实有一个ArrayList List<T> list = new ArrayList<>();

但是如何从列表中删除元素? 我尝试了list.get(1);,但收到错误消息:error: incompatible types: T cannot be converted to int

1 个答案:

答案 0 :(得分:2)

您不能声明

List<int> list = ...

但您可以放心声明

List<Integer> list = new ArrayList<>()

Integer类与必需的签名匹配(它实现Comparable<Integer>)。

所以当您这样做时,就可以了

List<Integer> list = new ArrayList<>()
list.add(13) // autoboxing converts int to Integer
int value = list.get(0) // autoboxing converts Integer back to int

请特别注意,可以在该列表中添加null-s,因此以下内容会随着NPE爆炸:

List<Integer> list = new ArrayList<>()
list.add(null) // null reference is okay
int value = list.get(0) // throws, we got null Integer reference,
                        // that cannot be converted to a primitive

如果您需要这样做,可以执行以下操作:

Integer value = list.get(0)
if (null != value) {
  int primitive = value // safe, because non-null
}