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>>();