Existen varias otras preguntas de SO que hablan sobre la compilación de genéricos OK con el compilador de Eclipse, pero no javac (es decir, Java: Generics handled differenlty in Eclipse and javac y Generics compiles and runs in Eclipse, but doesn't compile in javac); sin embargo, esto parece ser ligeramente diferente.error de javac: tipos inconvertibles con genéricos?
tengo una clase enum
:
public class LogEvent {
public enum Type {
// ... values here ...
}
...
}
y tengo otra clase con un método que toma en objetos arbitrarios de tipos descendido de Enum
:
@Override public <E extends Enum<E>> void postEvent(
Context context, E code, Object additionalData)
{
if (code instanceof LogEvent.Type)
{
LogEvent.Type scode = (LogEvent.Type)code;
...
Esto funciona bien en Eclipse, pero cuando hago una construcción limpia con ant
, obtengo un par de errores, uno en la línea instanceof
, el otro en la línea de fundición:
443: inconvertible types
[javac] found : E
[javac] required: mypackage.LogEvent.Type
[javac] if (code instanceof LogEvent.Type)
[javac] ^
445: inconvertible types
[javac] found : E
[javac] required: com.dekaresearch.tools.espdf.LogEvent.Type
[javac] LogEvent.Type scode = (LogEvent.Type)code;
[javac] ^
¿Por qué sucede esto, y cómo puedo evitar este problema para que se compile correctamente?
gracias. ¿Por qué es eso feo? Es simple y tiene un bajo costo de tiempo de ejecución. –
@Jason S: es feo porque no puedo ver por qué es obligatorio. –
Este es un error conocido, IIRC. En realidad, hay docenas de errores relacionados, ninguno de ellos reparado aún. – maaartinus