铸字的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