java - 列表中列表的特定通用类型

标签 java list generics collections generic-collections

我有一个列表列表。

我想知道如何限制每个内部列表的通用类型,以便外部列表的每个元素都包含一个只能包含一种类型的对象的内部列表。到目前为止我已经尝试过:

List<ArrayList<?>> l = new ArrayList<ArrayList<?>>();

但是有一些方法可以将不属于的对象类型添加到内部列表中。有没有办法指定内部列表接受的类型?

例如,如果我有以下内部列表,

ArrayList<T1> innerList = new ArrayList<T1>();
ArrayList<T2> innerList2 = new ArrayList<T2>();
ArrayList<T3> innerList3 = new ArrayList<T3>();

如何创建一个可以包含所有内部列表的外部列表,同时保留内部列表包含的特定类型。

此外,我不确定这是否可能,或者我所做的设计是否糟糕。如果它是糟糕的设计,那么深入了解更好的设计(也许有一个不同的集合可以做得更好)将非常感激。

最佳答案

如果内部列表的类型没有共同点,则无法缩小范围,通配符 ? 是最好的选择。

如果T1 T2T3都从基类B扩展,那么你可以写:

List<List<? extends B>> outerList = new ArrayList<List<? extends B>>();

或者如果他们共享一个接口(interface)也同样如此。这取决于它们正在实现哪些通用功能,需要它们存储在同一个列表中。

如果您需要设计方面的帮助,您需要用示例/用例来解释您的情况。如果它们没有任何共同点,那么将它们保留在同一个集合中可能不是一个好的设计。

关于java - 列表中列表的特定通用类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6987506/

相关文章:

java - 创建具有随机属性的对象

list - 列表的 Scala 列表计算每个子列表索引的不同元素

c - C中列表的所有元素的总和

java - 如何使用 Class.forName 的结果创建泛型类的实例

java - 从文本到数字

java - 尝试将 FrameLayout 转换为子类时出现 ClassCastException

java - 如何在Java中以递增的周期重复运行任务?

python - 如何在Python中对列表进行分组?

java - java main 函数中使用的泛型类

c# - 如何获取嵌套泛型类型的类型