java - ultimo - listas ligadas
java.lang.ClassCastException: creación de una lista vinculada sincronizada (2)
Use el método Collections.synchronizedList()
lugar. El método devuelve una List<T>
. Por lo tanto, escriba el tipo en LHS como List
, para evitar el encasillado:
List<A<? extends B>> eopList = Collections.synchronizedList(new LinkedList<A<? extends B>>());
Quiero una LinkedList sincronizada con una Clase A Genérica, aquí las partes relevantes:
public abstract class A<T extends B> implements Runnable {
Y la interfaz para B, donde el "verdadero" B, será una superclase
public interface B{
La siguiente configuración generará un error de tiempo de ejecución:
LinkedList<A<? extends B>> eopList = (LinkedList<A<? extends B>>) Collections
.synchronizedCollection(new LinkedList<A<? extends B>>());
He encontrado la siguiente propuesta, pero tampoco compilará:
LinkedList<A<? extends B>> eopList = (LinkedList) Collections
.synchronizedCollection(new LinkedList<A<? extends B>>());
Este es el registro:
Exception in thread "main" java.lang.ClassCastException: java.util.Collections$SynchronizedCollection cannot be cast to java.util.LinkedList
En las palabras de nos en ¿Está LinkedList seguro para subprocesos cuando estoy accediendo a él con oferta y encuesta exclusivamente? :
LinkedList no es seguro para subprocesos. Tendrás que hacer el bloqueo tú mismo.
Pruebe ConcurrentLinkedQueue o LinkedBlockingDeque en su lugar, si se ajusta a sus necesidades
o prueba este código de la respuesta de Piyush Hari :
LinkedList<A<? extends B>> eopList = (LinkedList)Collections.synchronizedList(new LinkedList<A<? extends B>());