Bagaimana menemukan kelas mana yang mengimplementasikan antarmuka tertentu di Eclipse?


88

Saya memiliki aplikasi sebagai file JAR dengan banyak dependensi. Untuk beberapa alasan saya perlu mendekompilasi salah satu perpustakaan dan membukanya dengan Eclipse. Untuk antarmuka tertentu dalam proyek, apakah ada cara untuk menemukan kelas yang mengimplementasikannya? Mungkin saja antarmuka diimplementasikan di perpustakaan lain yang belum saya dekompilasi. Apakah mungkin melakukan ini untuk kelas semacam ini?

Jawaban:


115

Klik kanan pada antarmuka, dan pilih "Open type hierarchy". Kemudian klik "Tampilkan hierarki subjenis".


Itu tidak menunjukkan apa-apa, ketika saya mengklik "Tampilkan hierarki subtipe", saya hanya melihat Antarmuka bukan kelas yang menerapkannya.
Am1rr3zA

1
Artinya, tidak ada kelas di Java Build Path dari proyek yang mengimplementasikan antarmuka ini. Eclipse tentu saja harus tahu tentang kelas-kelas potensial: file jar yang berisi kelas-kelas itu harus ada di Path Build Java proyek.
JB Nizet

Maksud Anda, saya harus menambahkan file jar lainnya ke Java Build Path?
Am1rr3zA

5
Ya tentu saja. Eclipse hanya tahu tentang kelas-kelas di classpath tersebut. Itu tidak akan memindai seluruh hard disk Anda untuk menemukan beberapa kelas yang menerapkan antarmuka Anda.
JB Nizet

Saya menambahkan file Jar lain ke Path Build Java saya tetapi masih tidak menunjukkan implementasinya. dan saya yakin beberapa kelas menerapkannya karena melalui Refleksi saya dapat menggunakannya.
Am1rr3zA

47

Coba Ctrl+ Tsetelah memilih nama kelas; harus bekerja dalam Perspektif Java.


10

Anda dapat "Show Type Hierarchy" pada item (Klik Kanan untuk memilih opsi ini atau tekan F4saat item disorot) *.

Namun, ini hanya akan mencantumkan item dalam proyek yang dirujuk ("tergantung"). Tidak pada orang lain.

Jadi, jika Anda telah mendekompilasi sebuah jar, dan ada jar lain yang belum Anda dekompilasi, maka implementasi (antarmuka) dalam jar itu tidak akan dicantumkan.

Juga, katakanlah Anda telah mendekompilasi sebuah botol sebagai sebuah proyek dan ada proyek lain yang merujuk ke botol tersebut, dan bukan proyek yang didekompilasi, implementasi di dalamnya juga tidak akan dicantumkan.

Jadi Anda harus mendekompilasi semua toples dan menambahkannya sebagai proyek (dan menambahkan referensi melalui "Java Build Path") untuk memastikan semua implementasi dalam toples pilihan Anda telah terdaftar.

* Hierarki tipe cepat, ctrl + T akan menampilkan struktur serupa di panel jenis tooltip / pelengkapan otomatis. Namun hierarki tipe lengkap lebih berguna untuk tipe analisis yang ingin Anda lakukan.


8

Ada tombol radio "Pelaksana" di Pencarian Java.


3
Bagaimana tidak menjawab pertanyaan itu? Buka Pencarian Java, masukkan nama antarmuka, klik "Pelaksana" dan Anda akan "menemukan kelas mana yang menerapkan antarmuka tertentu."
stackexchanger

1

Atau klik kanan dan pilih Quick Type Hierarchymenu pull-down untuk memperluas antarmuka dan kelas implementasi.


Ketika saya mengklik kanan dan memilih Quick Type Hierarchy, saya hanya melihat Antarmuka, bukan kelas yang menerapkannya
Am1rr3zA

0

Ctrl + H (Opsi Pencarian) Buka perspektif Pencarian Java dan, masukkan nama antarmuka, klik tombol radio Implementors dan Anda akan menemukan kelas mana yang menerapkan antarmuka tertentu. Sama seperti jawaban dari stackexchanger di atas


Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.