Envolviendo un error genérico de tipo de clase
Frecuentes
Visto 336 equipos
1
No entiendo por qué este código muestra este error de compilación.
El error es:
Type mismatch: cannot convert from TestClass.Wrapper<List<capture#1-of ?>> to TestClass.Wrapper<List<?>>
El código está a continuación.
package test.cls;
import java.util.List;
public class TestClass
{
static abstract class Wrapper<A>
{
public abstract A wrapped();
}
public static <A> Wrapper<A> wrap(final A val)
{
return new Wrapper<A>()
{
public A wrapped()
{
return val;
}
};
}
public static void main(final String[] args)
{
final List<?> list = null;
final Class<?> c = null;
final Wrapper<List<?>> wrapList = wrap(list); // Error here
final Wrapper<Class<?>> wrapC = wrap(c); // Error here
}
}
1 Respuestas
5
La inferencia de tipo genérico del compilador se está ahogando con las capturas de comodines anidados. Debe especificar explícitamente los argumentos de tipo:
final Wrapper<List<?>> wrapList = TestClass.<List<?>>wrap(list);
final Wrapper<Class<?>> wrapC = TestClass.<Class<?>>wrap(c);
Respondido 25 Abr '13, 00:04
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas java generics or haz tu propia pregunta.
¿Estás tratando de instanciar una clase abstracta? - TheEwook
@TheEwook No, el OP está devolviendo una instancia de clase anónima. - Paul Bellora