Come trovare quali classi implementano una particolare interfaccia in Eclipse?


88

Ho un'applicazione come file JAR con molte dipendenze. Per qualche motivo ho bisogno di decompilare una delle librerie e aprirla con Eclipse. Per una data interfaccia nel progetto, c'è un modo per trovare le classi che lo implementano? Può darsi che l'interfaccia sia stata implementata in un'altra libreria che non ho ancora decompilato. È possibile farlo per questo tipo di classi?

Risposte:


114

Fare clic con il pulsante destro del mouse sull'interfaccia e scegliere "Apri gerarchia di tipo". Quindi fare clic su "Mostra la gerarchia del sottotipo".


Non mi ha mostrato nulla, quando clicco su "Mostra la gerarchia del sottotipo" vedo solo l'interfaccia e non la classe che l'ha implementata.
Am1rr3zA

1
Quindi significa che nessuna classe nel percorso build Java del progetto implementa questa interfaccia. Eclipse ovviamente deve conoscere le potenziali classi: il file jar che le contiene deve trovarsi nel percorso di compilazione Java del progetto.
JB Nizet

Vuoi dire che devo aggiungere un altro file jar a Java Build Path?
Am1rr3zA

5
Sì, naturalmente. Eclipse conosce solo le classi nel classpath. Non eseguirà la scansione dell'intero disco rigido per trovare una classe che implementa la tua interfaccia.
JB Nizet

Aggiungo un altro file Jar al mio percorso di compilazione Java ma non mi ha ancora mostrato l'attuazione. e sono sicuro che qualche classe lo implementa perché tramite Reflection posso usarlo.
Am1rr3zA

47

Prova Ctrl+ Tdopo aver selezionato il nome della classe; dovrebbe funzionare in Java Perspective.


10

È possibile "Mostra gerarchia dei tipi" sull'elemento (fare clic con il pulsante destro del mouse per scegliere questa opzione o premere F4quando l'elemento è evidenziato) *.

Tuttavia, questo elencherà solo gli elementi in quei progetti che sono indicati ("dipendenti"). Non in altri.

Quindi, se hai decompilato un vaso, e c'è un altro vaso che non hai decompilato, le implementazioni (dell'interfaccia) in quel vaso non saranno elencate.

Inoltre, supponiamo di aver decompilato un jar come progetto e che ci sia un altro progetto che si riferisce al jar, e non il progetto decompilato, anche le implementazioni in quello non saranno elencate.

Quindi dovrai decompilare tutti i jar e aggiungerli come progetti (e aggiungere riferimenti tramite "Java Build Path") per assicurarti che tutte le implementazioni nei jar di tua scelta siano elencate.

* Gerarchia di tipo rapido, ctrl + T mostrerà una struttura simile in un tipo di pannello di descrizione comando / completamento automatico. Ma la gerarchia dei tipi completa è più utile per il tipo di analisi che si intende eseguire.


8

Nella ricerca Java è presente il pulsante di opzione "Implementors".


3
Come non risponde alla domanda? Apri Java Search, inserisci il nome dell'interfaccia, fai clic su "Implementors" e "troverai quali classi implementano una particolare interfaccia".
stackexchanger

1

Oppure fai clic con il pulsante destro del mouse e seleziona Quick Type Hierarchyper visualizzare un menu a discesa per l'estensione delle interfacce e l'implementazione delle classi.


Quando faccio clic con il pulsante destro del mouse e seleziono Gerarchia di tipo rapido, vedo solo l'interfaccia, non la classe che l'ha implementata
Am1rr3zA

0

Ctrl + H (opzione di ricerca) Apri la prospettiva di ricerca Java e, inserisci il nome dell'interfaccia, fai clic sul pulsante di opzione Implementors e troverai quali classi implementano una particolare interfaccia. Uguale alla risposta di stackexchanger sopra


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.