annotation @Override dans JDK 1.6
-
26-09-2019 - |
Question
J'utilise JDK1.6. Quand j'implémentent une interface et dans la classe mise en œuvre, si je donne @override
avant mes noms de fonction, Eclipse génère une erreur de compilation. à-dire en dessous de code est erroné selon Eclipse.
public class SomeListener implements ServletContextListener {
@Override
public void contextDestroyed(ServletContextEvent arg0) {
// code
}
/* other overridden methods here */
}
Si je supprime l'annotation @Override
, le code compile bien. Est-ce que cela signifie que JDK1.6 ne nous oblige pas à préfixer l'annotation @override
plus?
La solution
Vous avez probablement besoin de définir le niveau de conformité du compilateur dans Eclipse. Cela se trouve dans Fenêtre-> Préférences-> Java-> Compiler
Si les préférences du compilateur sont toujours mis à 1,5 le compilateur barf sur l'annotation de remplacement.
Edit:. Vérifiez également le niveau de conformité compilateur sur une base par projet si vous avez défini les à rien d'autre que par défaut
Autres conseils
@Overidde travaille sur la mise en œuvre de la méthode depuis Java 1.6.
Ressources:
- forums de Sun Java - Programmation - @Override doit s'appliquer à la mise en œuvre de l'interface / méthodes abstraites
- dertompson.com - changements de spécification @Override en Java 6
- L'ancien Weblog de Peter Ahé - @Override pagaille
Sur le même sujet:
Les paramètres du compilateur Java peut être à plusieurs endroits en fonction de la configuration choisie, La première consiste à Fenêtre-> Préférences-> Java-> compilateur, changement à 1,6 minimum, si elle a été fixée à une version antérieure. Une autre façon est un clic droit sur Projet-> Propriétés -> compilateur Java -> Conformité JDK -.> Sélectionnez minimum JDK1.6, cliquez sur Appliquer
Une fois les changements, laissez la construction du projet, il construit et prendre les changements en effet.
Si aucun des travaux d'options ci-dessus -. Essayez d'ajouter le rt.jar à classpath, il va corriger le problème
L'annotation @Override modifiée dans la version Java 1.6. En Java 1.5, le compilateur n'a pas permis d'annotation @Override sur les méthodes d'interface mises en œuvre, de 1.6, il le fait.
Vous devez changer java version du compilateur dans les propriétés de projet -> compilateur Java
JDK1.6 soutient certainement. Je ne sais pas pourquoi vous auriez des questions.
Quelle erreur voyez-vous? La seule chose que je peux penser est de vous assurer que vous utilisez le JDK dans les paramètres du projet. Peut-être vous compilez contre un ancien JDK?
Non l'annotation @Override est encore utilisé. Vous devriez vérifier que la méthode de contextDestroyed
est réellement présent dans l'interface ServletContextListener
et de vérifier le package importé pour cette interface.
Il semble que votre compilateur est défini pour Java 5, lorsque @Override
sur les interfaces n'a pas été autorisé.