1

ジェネリック クラス A と同期した LinkedList が必要です。関連する部分は次のとおりです。

public abstract class A<T extends B> implements Runnable {

そして、「本当の」BがsupclassになるBのインターフェース

public interface B{

次のセットアップは、ランタイム エラーをスローします。

LinkedList<A<? extends B>> eopList = (LinkedList<A<? extends B>>) Collections
            .synchronizedCollection(new LinkedList<A<? extends B>>());

次の提案を見つけましたが、それもコンパイルされません。

LinkedList<A<? extends B>> eopList = (LinkedList) Collections
            .synchronizedCollection(new LinkedList<A<? extends B>>());

これはログです:

Exception in thread "main" java.lang.ClassCastException: java.util.Collections$SynchronizedCollection cannot be cast to java.util.LinkedList
4

2 に答える 2

6

Collections.synchronizedList()代わりにメソッドを使用してください。メソッドは を返しますList<T>Listしたがって、型キャストを避けるために、LHS の型を asにします。

List<A<? extends B>> eopList = Collections.synchronizedList(new LinkedList<A<? extends B>>());
于 2013-10-22T06:22:19.360 に答える