2017-05-20 4 views
0

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

0

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.

0

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.