gpt4 book ai didi

java - 在另一个通用接口(interface)中使用一个通用接口(interface)

转载 作者:行者123 更新时间:2023-11-29 03:23:05 25 4
gpt4 key购买 nike

我有一个变量 e4类型 List<List<Integer>> ,我想用 new ArrayList<ArrayList<Integer>>() 初始化.我希望这会以类似于分配给 List<Integer> 的方式起作用。 -类型变量a new ArrayList<Integer>() .相反,有一个编译错误;这背后的原因是什么,是否有必要使用 e3 之类的语句?或 e5

import java.util.List;
import java.util.ArrayList;

public class Example {
public static void main(String[] args) {
// e1-3 compile as expected
ArrayList<Integer> e1 = new ArrayList<Integer>();
List<Integer> e2 = new ArrayList<Integer>();
ArrayList<ArrayList<Integer>> e3 = new ArrayList<ArrayList<Integer>>();
// e4 does not compile
List<List<Integer>> e4 = new ArrayList<ArrayList<Integer>>();
// e5 does compile
List<ArrayList<Integer>> e5 = new ArrayList<ArrayList<Integer>>();
}
}

在尝试编译上面的代码时,我收到错误消息:

/home/james/Example.java:12: error: incompatible types
List<List<Integer>> e4 = new ArrayList<ArrayList<Integer>>();
^
required: List<List<Integer>>
found: ArrayList<ArrayList<Integer>>
1 error

最佳答案

原因是 List<ArrayList<Integer>>不是 List<List<Integer>> , 即使 ArrayList<Integer>List<Integer> .这里的推理与 List<Dog> 的事实相同。不是 List<Animal> ,即使是 Dog是一个 Animal .类比是ArrayList<Integer>List<Integer>作为DogAnimal .

以下是备选方案:

1) 您的“e5”,与通用类型完全匹配。

List<ArrayList<Integer>>      e5 = new ArrayList<ArrayList<Integer>>();

List<List<Integer>> e5 = new ArrayList<List<Integer>>();

2) 使用通配符:

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

关于java - 在另一个通用接口(interface)中使用一个通用接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22515108/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com