Bonjour,
Voici une question concernant un problème de compatibilité Java que je rencontre sur l'un des projets sur lequel je travaille.
Ce projet, comportant un nombre important de modules et de classes, était compilé jusque récemment avec Java 5. Une des classes développées implémente une interface de base (java.xxx) de la librairie runtime possédant une méthode.
En passant en Java 6, le projet ne compile plus car l'interface de base expose maintenant deux méthodes.
Ma première solution était d'implémenter la seconde méthode avec un squelette vide, mais dans ce cas, le projet ne compile plus en Java 5, car cette méthode référence des classes qui n'existent pas en Java 5.
Le serpent se mord donc la queue...
Une solution simple était de transformer la classe pour ne plus implémenter l'interface (et donc de ne pas avoir à implémenter la méthode inutile), malheureusement cela est irréalisable, car de nombreux appels dans le code du projet utilisent l'interface et pas la classe et cela demanderait un temps considérable à modifier.
Est-il possible par exemple d'effectuer une compilation sélective en fonction de la version de Java comme on le ferait en C avec des #define?
Partager