【发布时间】:2011-06-23 16:51:12
【问题描述】:
要通过合同或接口编程,我定义了一个这样的类:
public ClsOne{
private List<IntfA> fieldA;
public setFieldA(List al);
}
public ClsA implements IntfA{...}
然后在其他地方,我们可以写:
....
ArrayList<ClsA> alist = new ArrayList<ClsA>();
ClsOne one = new ClsOne();
one.setFieldA(alist);
但是,这似乎不适用于嵌入式容器:
public ClsTwo{
private List<List<IntfA>> fieldA;
public setFieldA(List<List<IntfA>> al);
}
public ClsA implements IntfA{...}
因为下面的代码不正确:
ArrayList<ArrayList<ClsA>> aalist = new ArrayList<ArrayList<ClsA>>();
ClsOne one = new ClsOne();
one.setFieldA(aalist);
那么,在这种情况下,在 ClsA 的定义中,有什么办法可以隐藏具体的容器类型吗?
【问题讨论】:
-
编译错误?运行时错误?您遇到的错误是什么
-
我认为您可以通过说类似 List。试试看。
-
您是否需要列表列表?也许不同的数据结构会更有效。例如可能是 Map
> -
@RMT 编译错误。类型不合适。
-
@John Kane ,我只想保留一个路径列表,每个路径都有一个节点列表,要使用 Map,我必须为每个路径生成另一个元素作为键。
标签: java types containers