No hay nada en el lenguaje Java que fue removido entre JDK5 y 6. Lo único que se añadió, como se ha dicho, se estaba permitida en los métodos de la interfaz de la anotación @Override
- No hay palabras clave. Por lo tanto, temo que te quedan muchas diferencias en las bibliotecas como la única causa de los cambios.
Estas existen, incluso en la API central; en un ataque inusual de juerga de compatibilidad con versiones anteriores, cambiaron la firma de algunos métodos en la interfaz ExecutorService
. Esto se debió a que las firmas genéricas de los métodos eran demasiado restrictivas. Esta fue una biblioteca pura cambio (aunque, siendo parte de java.util
, una bonita biblioteca central ); nada que ver con ninguna modificación de nivel de idioma.
Por ejemplo, from JDK5:
<T> T invokeAny(Collection<Callable<T>> tasks)
to JDK6:
<T> T invokeAny(Collection<? extends Callable<T>> tasks)
Esto significa que cualquier programa que contenía código implementación de esta interfaz en JDK5, no habría compilado con JDK6. Un fragmento es fácil de crear; simplemente deje que su IDE cree una implementación vacía de la interfaz JDK5 y luego contruya contra JDK6.
Nota: que se añadió el comodín porque la versión anterior no habría aceptado un parámetro como List<MyCallable<String>>
(es decir, la colección se escribe por alguna subclase de opción de rescate), mientras que la versión posterior lo hace.
¿por qué no cambias el nivel de compilador en eclipse? –
@Diago, de la pregunta "Esto es para estar seguro de que el nivel del compilador está configurado correctamente". –
No hay nada en el lenguaje eliminado entre JDK5 y 6. Lo único que se agregó, como se ha dicho, fue la anulación de anulación de los métodos de interfaz, por lo tanto, no es una palabra clave.Por lo tanto, estás atascado con las diferencias de la biblioteca, me temo que –