通过合同或接口编程,我定义了一个这样的类:

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定义的混凝土容器类型的工作?

最佳答案

您可以实例化一个ArrayList,其中包含List<ClsA>类型的对象:

ArrayList<List<ClsA>> aalist = new ArrayList<List<ClsA>>();
ClsOne one = new ClsOne();
one.setFieldA(aalist);

07-27 13:37