Java 类型转换阵列列表

Java 类型转换阵列列表,java,list,generics,synchronized,Java,List,Generics,Synchronized,我有一个扩展泛型类型Arraylist的类: class ListA extends ArrayList<A>{ } 但上面的代码给出了类型转换异常。我最不想迭代对象a并将列表成员存储在不同的同步列表中 关于如何进行此操作有何建议?集合。synchronizedList()声明如下 public static <T> List<T> synchronizedList(List<T> list) { 公共静态列表同步列表(列表列表){ 换句话

我有一个扩展泛型类型Arraylist的类:

class ListA extends ArrayList<A>{

}
但上面的代码给出了类型转换异常。我最不想迭代对象
a
并将列表成员存储在不同的同步列表中


关于如何进行此操作有何建议?

集合。synchronizedList()
声明如下

public static <T> List<T> synchronizedList(List<T> list) {
公共静态列表同步列表(列表列表){
换句话说,它返回一个
列表
。您不知道也不应该知道关于实现类的任何信息。因此,您不能期望它属于
ListA
类型


只要有可能。

将继承自
ArrayList
的类替换为包含以下列表的接口和类:

interface ListA extends List<A> {
    // Put additional methods here
}
class ListAImpl implements ListA {
    private List<A> content;
    public ListAImpl(List<A> content) {
        this.content = content;
    }
    // Use delegation for all methods of the List<A> interface, calling through
    // to the content list.
}

为什么你需要
a
成为
ListA
而不是
List
?可能是@PaulBellora的副本:@PaulBellora是我的项目中到处使用的一个遗留类,我想坚持使用同一个类。那才是真正的问题。你应该这样做。我想你是指
新的ListAImpl
,尽管我不明白嵌套的
列表的意义A
@SotiriosDelimanolis Yes-我在代码中添加了一条注释,以表明发生了什么。谢谢!
interface ListA extends List<A> {
    // Put additional methods here
}
class ListAImpl implements ListA {
    private List<A> content;
    public ListAImpl(List<A> content) {
        this.content = content;
    }
    // Use delegation for all methods of the List<A> interface, calling through
    // to the content list.
}
ListA a = new ListAImpl(new ArrayList<A>());
ListA sync = new ListAImpl(Collections.synchronizedList(a));