89 votes

Comment trouver les classes qui implémentent une interface particulière dans Eclipse ?

J'ai une application sous forme de fichier JAR avec de nombreuses dépendances. Pour une raison quelconque, je dois décompiler une des bibliothèques et l'ouvrir avec Eclipse. Pour une interface donnée dans le projet, existe-t-il un moyen de trouver la ou les classes qui l'implémentent ? Il se peut que l'interface soit implémentée dans une autre bibliothèque que je n'ai pas encore décompilée. Est-il possible de faire cela pour ce type de classes ?

117voto

JB Nizet Points 250258

Cliquez avec le bouton droit de la souris sur l'interface, et choisissez "Ouvrir la hiérarchie des types". Puis cliquez sur "Afficher la hiérarchie des sous-types".

0 votes

Il ne m'a rien montré, lorsque je clique sur "Afficher la hiérarchie des sous-types", je ne vois que l'interface et non la classe qui l'implémente.

1 votes

Cela signifie alors qu'aucune classe dans le chemin de construction Java du projet n'implémente cette interface. Eclipse doit bien sûr connaître les classes potentielles : le fichier jar qui les contient doit se trouver dans le Java Build Path du projet.

0 votes

Vous voulez dire que je dois ajouter un autre fichier jar au chemin de construction de Java ?

47voto

Scorpion Points 2406

Essayez Ctrl + T après avoir sélectionné le nom de la classe ; cela devrait fonctionner dans Java Perspective.

10voto

Nivas Points 10159

Vous pouvez "Afficher la hiérarchie des types" sur l'élément (cliquez à droite pour choisir cette option ou appuyez sur F4 lorsque l'élément est en surbrillance)*.

Cependant, cela ne listera que les éléments dans les projets qui sont référencés ("dépendants"). Pas dans les autres.

Ainsi, si vous avez décompilé un jar et qu'il existe un autre jar que vous n'avez pas décompilé, les implémentations (de l'interface) de ce jar ne seront pas répertoriées.

De même, si vous avez décompilé un jar en tant que projet et qu'un autre projet fait référence au jar, et non au projet décompilé, les implémentations de ce projet ne seront pas non plus répertoriées.

Vous devrez donc décompiler tous les jars et les ajouter en tant que projets (et ajouter des références via "Java Build Path") pour vous assurer que toutes les implémentations dans les jars de votre choix sont listées.

* Type rapide Hiérarchie, ctrl + T affichera une structure similaire dans un panneau de type infobulle/autocomplet. Mais la hiérarchie de type complet est plus utile pour le type d'analyse que vous avez l'intention de faire.

8voto

Vlad Points 1

Il y a un bouton radio "Implementors" dans Java Search.

3 votes

En quoi cela ne répond-il pas à la question ? Ouvrez Java Search, entrez le nom de l'interface, cliquez sur "Implementors" et vous "trouverez quelles classes implémentent une interface particulière".

1voto

Sean Patrick Floyd Points 109428

Ou cliquez avec le bouton droit de la souris et sélectionnez Quick Type Hierarchy pour un menu déroulant d'extensions d'interfaces et de classes d'implémentation.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X