|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | |
|
Expert Confirmé
![]() ![]() Inscription : janvier 2005 Messages : 2 807 ![]() |
Salut,
L'annotation @Override doit être utilisée lorsqu'une méthode redéfinit la méthode de la superclasse, par exemple : Code :
@Override public boolean equals(Object other) {...} Citation:
Pour information, @Override génère une erreur dans ce cas (pour les méthodes implémentées d'une interface) dans Java 5, mais pas dans Java 6... |
|
|
|
01
|
|
|
#2 | |
|
Expert Confirmé Sénior
![]() ![]() Inscription : octobre 2004 Messages : 4 678 ![]() |
Citation:
|
|
|
|
00
|
|
|
#3 | ||||
|
Membre éclairé
![]() ![]() Yann Arthur NicolasInscription : novembre 2005 Messages : 159 ![]() |
Mais si on peut utiliser @Override.
Faut considérer une interface comme une classe complétement abstraite, c'est à dire que toutes les méthodes sont abstraites. Code :
Code :
|
||||
|
00
|
|
|
#4 | |
|
Expert Confirmé Sénior
![]() ![]() Inscription : octobre 2004 Messages : 4 678 ![]() |
Citation:
|
|
|
|
00
|
|
|
#5 | |
|
Membre éclairé
![]() ![]() Yann Arthur NicolasInscription : novembre 2005 Messages : 159 ![]() |
Citation:
|
|
|
01
|
|
|
#6 |
|
Expert Confirmé
![]() ![]() Inscription : janvier 2005 Messages : 2 807 ![]() |
Moi je trouverais ça bien pratique car je fais la javadoc sur toutes les méthodes, sauf bien sûr si elle est déjà documentée dans l'interface... Ça permet de voir rapidement si une méthode n'a pas de javadoc parce qu'elle est implémentée, ou parce que c'est un oubli...
|
|
|
11
|
|
|
#7 |
|
Expert Confirmé Sénior
![]() ![]() Développeur Java/Web Inscription : avril 2002 Messages : 12 654 ![]() |
Salut,
Le sens d'Override a bien changé entre Java 5.0 et 6... J'avais trouvé une discussion intéressante sur le sujet mais je ne la retrouve plus... Je vais essayer de vous résumer ca de mémoire : On y parlais également d'une annotation @Implement, mais au final ils en étaient arrivé à la conclusion que cela apporterait plus de problème, et qu'il était préférable d'utiliser @Override dans tous les cas dans le sens "j'implémente ou je redéfini une méthode". Le principal problème concernait les méthodes abstraites des classes abstraites : doit-on utiliser @Implement ou @Override dans ce cas ? Si on utilise @Implement, on limite les évolutions de la méthode. Si on utilise @Override, on fait la distinction dans l'implémentation d'une méthode abstraite selon qu'elle soit défini dans une classe ou une interface. De même on peut se retrouver avec le même problème si une classe abstraite déclare implémenter une interface mais ne propose pas d'implémentation pour ses méthodes... Bref lorsqu'on y regarde bien l'utilisation d'@Implement en plus d'@Override pose un grand nombre de cas particulier qui complexifieraient l'utilisation de ces deux annotations... En adoptant une annotation commune au notion d'implémentation et de redéfinition on se simplifie grandement la vie... De plus, il n'y a pas vraiment d'intérêt à différencier ces deux cas... a++
__________________
adiGuba [ tutoriels | blog | twitter ] Rédacteur/Modérateur Java |
|
20
|
|
|
#8 |
|
Expert Confirmé
![]() ![]() Inscription : janvier 2005 Messages : 2 807 ![]() |
Donc même quand on implémente une méthode, il est préférable d'utiliser @Override (plutôt que rien)...?
|
|
|
11
|
|
|
#9 | |
|
Expert Confirmé Sénior
![]() ![]() Développeur Java/Web Inscription : avril 2002 Messages : 12 654 ![]() |
Citation:
a++
__________________
adiGuba [ tutoriels | blog | twitter ] Rédacteur/Modérateur Java |
|
|
10
|
|
|
#10 | |
|
Expert Confirmé
![]() ![]() Inscription : janvier 2005 Messages : 2 807 ![]() |
Citation:
Cependant, ce qui est dommage, c'est que sans ça, un programme java 6 compile en java 5 pour peu qu'on n'utilise pas une nouvelle classe (et là ça casse ceci). Autre chose, peut-on configurer eclipse pr qu'il fasse un warning si on ne met pas le @Override lorsqu'une méthode est implémentée (il le fait que pr les méthodes redéfinies)? |
|
|
|
01
|
|
|
#11 | |||
![]() ![]() Fabrice BouyéDéveloppeur Java Inscription : août 2005 Messages : 4 073 ![]() |
Citation:
Dans JBuilder 2007*/Java 6 ca ne passe pas non plus cependant avec un "method xxx of type yyy must override a superclass method." *JBuilder 2007 est base sur Eclipse. Tests realises avec : Code :
__________________
Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes. suivez mon blog sur Développez.Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook |
|||
|
00
|
|
|
#12 | |
|
Expert Confirmé Sénior
![]() ![]() Inscription : octobre 2004 Messages : 4 678 ![]() |
Citation:
|
|
|
|
01
|
|
|
#13 | |||
|
Expert Confirmé Sénior
![]() ![]() Développeur Java/Web Inscription : avril 2002 Messages : 12 654 ![]() |
Citation:
Cela peut donc varier d'une version d'eclipse à l'autre... Citation:
Citation:
a++
__________________
adiGuba [ tutoriels | blog | twitter ] Rédacteur/Modérateur Java |
|||
|
20
|
|
|
#14 | |
|
Expert Confirmé Sénior
![]() ![]() Développeur Java/Web Inscription : avril 2002 Messages : 12 654 ![]() |
Citation:
D'ailleurs sur ce blog on retrouve un autre message qui indique le comportement de @Override : http://blogs.sun.com/ahe/entry/override_snafu
a++
__________________
adiGuba [ tutoriels | blog | twitter ] Rédacteur/Modérateur Java |
|
|
00
|
|
|
#15 | ||
|
Expert Confirmé Sénior
![]() ![]() Inscription : octobre 2004 Messages : 4 678 ![]() |
Citation:
En effet, Override n'est retenue que dans le source, pas le .class . Citation:
|
||
|
|
00
|
|
|
#16 | |
|
Expert Confirmé
![]() ![]() Inscription : janvier 2005 Messages : 2 807 ![]() |
Citation:
Maintenant il faudrait que eclipse mette les warnings qu'il faut quand on n'a pas mis @Override sur une méthode implémentée... |
|
|
|
01
|
|
|
#17 |
|
Membre confirmé
![]() Inscription : janvier 2005 Messages : 229 ![]() |
Merci pour cette discussion. Ça m'a permis de découvrir qu'on pouvait utiliser @Override pour les implémentations d'interface. Ça me manquait cruellement !!
Pour le warning d'eclipse, il faudrait voir si il y a déjà un bugreport et sinon le créer |
|
|
02
|
|
|
#18 | |
|
Expert Confirmé Sénior
![]() ![]() Développeur Java/Web Inscription : avril 2002 Messages : 12 654 ![]() |
Citation:
a++
__________________
adiGuba [ tutoriels | blog | twitter ] Rédacteur/Modérateur Java |
|
|
10
|
|
|
#19 | |
|
Expert Confirmé Sénior
![]() ![]() |
Citation:
|
|
|
|
10
|
Copyright © 2000-2013 - www.developpez.com