En essayant de créer une interface graphique cliquer-glisser, j'ai accidentellement écrasé Component.move
dans ma sous-classe. Cela provoquait un débordement de pile chaque fois que Component.setLocation
était appelée. Après avoir renommé ma méthode de déplacement, cela ne s'est pas produit. J'ai découvert que j'avais écrasé move
et qu'il est appelé par setLocation
. Toutefois, la documentation Oracle indique que move
était obsolète depuis longtemps. Pourquoi est-il encore utilisé par setLocation
? Cela ne signifie-t-il pas que setLocation
est aussi obsolète ou move
ne l'est pas?Component.move (int, int) est obsolète mais est toujours utilisé
Répondre
tout api annoté comme @Deprecated
signifie qu'il sera supprimé dans la prochaine version. l'api obsolète est du point de vue des clients et non du vendeur. si la méthode move
supprime à l'avenir, le vendeur peut modifier le setLocation
mais le client ne peut pas exécuter sans mettre à jour le code pour appeler l'API new
.
setLocation
non annoté avec @Deprecated
signifie que vous pouvez être heureux d'exécuter le programme sans rien changer à l'avenir jdk.
Des méthodes obsolètes peuvent toujours exister pour prendre en charge la rétrocompatibilité d'une application ou pour indiquer au développeur que la méthode va être supprimée dans une prochaine version de la bibliothèque.
Une méthode déconseillée est encore entièrement fonctionnelle et fonctionne, mais c'est une indication qu'il existe une façon différente et préférable de faire la même chose.
D'autres méthodes, souvent avec des fonctionnalités différentes, qui utilisent encore la méthode obsolète ne sont pas nécessairement déconseillées. Leur implémentation peut être obsolète, mais l'API ne l'est pas.