dado:¿Por qué obtengo "Tipo genérico ilegal para instanceof"?
public class C<T> {
private class D {
public boolean equals(Object o) {
if (!(o instanceof D)) // line 4
return false;
D other = (D)o; // line 6
return i == other.i;
}
int i;
}
}
me sale:
C.java:4: illegal generic type for instanceof
if (!(o instanceof D))
^
también me sale un "molde sin control" de advertencia acerca de la línea 6. ¿Por qué? El o
es no un tipo genérico - es simplemente Object
. ¿Cómo puedo implementar correctamente equals()
comprobando y lanzando a una instancia de D
?
Nota: Obviamente, este ejemplo de código es una versión simplificada de mi código actual. Las clases reales para C
y D
son mucho más grandes y D
es una clase interna private
de C
utilizada por su implementación.
FYI: El D
real hace uso del parámetro genérico T
.
¿Has probado * instanceof C.D * en lugar de * D * instanceof? –
Solo voy a notar que el ejemplo dado * está * roto. –
@Evan: Eso funciona. Pero, ¿por qué es necesaria la calificación? –