Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 是否可以有一个通用集合集合?_Java - Fatal编程技术网

Java 是否可以有一个通用集合集合?

Java 是否可以有一个通用集合集合?,java,Java,我正在编写一些代码,需要处理任意数量的双精度列表。然而,尽管我可以声明类型为List的函数参数,但我在创建实际实例时遇到了困难,因为我需要创建具体类的实例,例如ArrayList 我试过了 List<? extends List<Double>> inputs = new ArrayList<List<Double>>(); inputs.add(new ArrayList<Double>()); 但是,以这种方式使用石膏有点难看。有

我正在编写一些代码,需要处理任意数量的双精度列表。然而,尽管我可以声明类型为
List
的函数参数,但我在创建实际实例时遇到了困难,因为我需要创建具体类的实例,例如
ArrayList

我试过了

List<? extends List<Double>> inputs = new ArrayList<List<Double>>();
inputs.add(new ArrayList<Double>());

但是,以这种方式使用石膏有点难看。有更好的方法吗?

您可以省略强制转换,因为此方法完全有效。每个ArrayList都是一个列表

List<List<Double>> inputs = new ArrayList<List<Double>>();
inputs.add(new ArrayList<Double>());
List inputs=new ArrayList();
add(newarraylist());

您误解了通配符的含义<代码>在决定应声明哪种类型时,有两种截然不同的情况:

1) 在公共界面中。使用适当的抽象类型

    public List<List<Double>> querySomething();
public List querySomething();
2) 作为实现细节。使用混凝土类型

    ArrayList<ArrayList<Double>> list = new ArrayList<ArrayList<Double>>();
ArrayList list=new ArrayList();

我猜你在处理第二个案子

在Java中,您通常不需要涉及通用通配符(?等),除非您正在创建API或执行其他高级操作。当然不适用于集合的标准用途。这里的示例章节很好,你是对的,确实如此-我确信我在尝试时出错了,但显然我感到困惑:-)是和否。我想构建一个可以接受
列表的接口,并且正在编写一些测试代码来练习该接口。谢谢你的帮助。昨天我显然把自己搞糊涂了。我非常确信这个简单的案例不会奏效,于是我开始使用通配符方法。
  List<List<Double>> list = new ArrayList<List<Double>>();
  list.add(new ArrayList<Double>());
    public List<List<Double>> querySomething();
    ArrayList<ArrayList<Double>> list = new ArrayList<ArrayList<Double>>();