铸字的ArrayList

我有延伸泛型类型的ArrayList类:铸字的ArrayList

class ListA extends ArrayList<A>{ 

}

现在我创造的ListA一个对象,然后我希望把它同步列表

ListA a = new ListA(); 

a = (ListA) Collections.synchronizedList(a);

但以上代码给出了类型转换异常。最后一件事,我想遍历对象a和商店列表memebers在一个不同的同步列表。

有关如何去解决这个问题的任何建议?

回答:

替换类从ArrayList<A>继承与接口,并含列表类

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对象的同步取决于你传递给它的构造是什么:通过一个“纯” ArrayList<A>有一个非同步ListA,或通过一个同步的有一个同步ListA

现在您的代码段,当您从一个非同步一个这样的同步ListA

ListA a = new ListAImpl(new ArrayList<A>()); 

ListA sync = new ListAImpl(Collections.synchronizedList(a));

回答:

Collections.synchronizedList()声明如下

public static <T> List<T> synchronizedList(List<T> list) { 

换句话说,它返回一个List。你不需要也不应该对实施课程有所了解。因此,你不能指望它是ListA类型。

Program to interfaces只要你可以。

以上是 铸字的ArrayList 的全部内容, 来源链接: utcz.com/qa/258171.html

回到顶部