Avec l'exception de manière permanente largement connue de l'introduction du mot-clé "ASSERT", a déjà été une modification de la spécification de langue Java, qui a provoqué un code ancien pour ne plus compatible avec les niveaux source plus récents du JDK? P >
Résumé jusqu'à présent (merci beaucoup pour les commentaires): p>
Le code Java "plus ancien" peut provoquer des erreurs de compilation, lors de la mise à niveau vers une version ultérieure, si le code utilise des déclarations à l'aide de l'un des mots-clés qui introduits dans une version ultérieure de la spécification de langue Java (JLS): P>
3 Réponses :
strictfp code> mot-clé. LI>
ul>
Java 1.4 H2>
-
affirme code> mot-clé. LI>
ul>
Java 1.5 H2>
-
Enum code> Mot clé. Li>
ul>
Je crois que _ code> a été désigné un "mot-clé" dans java 9. Voir https://blogs.oracle.com/sundararajan/underscore-is-a-keywording -java-9% 2c-use-this-script-vérifier-votre-code p>
Java 10 fabriqué var code> un mot clé. C'est toujours un nom de variable valide mais un nom de classe illégale. P>
Enum vient à l'esprit aussi.
strictfp . C'était défaut avant 1.2
Voir docs.oracle.com/javase/7/docs / TECHNOTES / GUIDES / LANGUE / ...
Le Java Nio sauve beaucoup de code
@Dima Goltsman, Nio n'a introduit aucune modification de Langue i>.
affirmer code> et
Enum code> sont des mots-clés, leur introduction a donc brisé l'ancien code qui a utilisé ces mots comme identifiants. Par exemple
Enums Code> Bibliothèque de Jakarta Commons.
En outre, il y avait un changement de comportement de @override Annotation.
Réponse créée pour résumer, ne peut pas vraiment penser à autre chose pour le moment (bon point pour Java). @javadéveloppeur Changement de comportement de remplacement n'a pas cassé la compatibilité.
@javadeveloper Le changement de remplacement @ n'a pas brisé le code existant.