Câu hỏi Làm thế nào để tìm ra những lớp nào thực hiện một giao diện cụ thể trong Eclipse?


Tôi có một ứng dụng như tệp JAR với nhiều phụ thuộc. Đối với một số lý do tôi cần phải dịch ngược một trong các thư viện và mở nó bằng Eclipse. Đối với một giao diện cụ thể trong dự án, có cách nào để tìm (các) lớp thực hiện nó không? Nó có thể là trường hợp giao diện được thực hiện trong thư viện khác mà tôi đã không dịch ngược. Có thể làm điều này cho loại lớp học này không?


76
2017-09-12 09:00


gốc




Các câu trả lời:


Nhấp chuột phải vào giao diện và chọn "Phân cấp loại mở". Sau đó nhấp vào "Hiển thị phân cấp loại phụ".


96
2017-09-12 09:02



Nó không hiển thị cho tôi bất cứ điều gì, khi tôi nhấp vào "Hiển thị phân cấp kiểu phụ" Tôi chỉ thấy Giao diện không phải lớp đã triển khai nó. - Am1rr3zA
Sau đó, nó có nghĩa là không có lớp nào trong Đường dẫn xây dựng Java của dự án triển khai thực hiện giao diện này. Eclipse tất nhiên phải biết về các lớp tiềm năng: tệp jar chứa chúng phải nằm trong Đường dẫn xây dựng Java của dự án. - JB Nizet
Bạn có nghĩa là tôi phải thêm tệp jar khác vào Đường dẫn xây dựng Java? - Am1rr3zA
Phải, tất nhiên. Eclipse chỉ biết về các lớp trong classpath. Nó sẽ không quét toàn bộ đĩa cứng của bạn để tìm một số lớp thực hiện giao diện của bạn. - JB Nizet
Tôi thêm tệp Jar khác vào Đường dẫn xây dựng Java của tôi nhưng vẫn không hiển thị cho tôi việc triển khai. và tôi chắc chắn một số lớp thực hiện nó bởi vì thông qua Reflection tôi có thể sử dụng nó. - Am1rr3zA


Thử Ctrl+T sau khi chọn tên lớp; nên làm việc trong Phối cảnh Java.


40
2017-09-12 09:02



câu trả lời hay nhất! Nó phải được đánh dấu là anh ta đúng. - Bruno Paulino


Bạn có thể "Hiển thị Phân cấp Loại" trên mục (Nhấp chuột phải để chọn tùy chọn này hoặc nhấn F4 khi mục được đánh dấu) *.

Tuy nhiên, điều này sẽ chỉ liệt kê các mục trong các dự án được gọi ("phụ thuộc"). Không phải ở những người khác.

Vì vậy, nếu bạn đã dịch ngược một cái lọ, và có một cái bình khác mà bạn không bị dịch ngược, thì những sự triển khai (của giao diện) trong cái bình đó sẽ không được liệt kê.

Ngoài ra, giả sử bạn đã biên dịch một cái bình như một dự án và có một dự án khác đề cập đến cái bình, và không phải là dự án bị biên dịch, các triển khai trong đó cũng sẽ không được liệt kê.

Vì vậy, bạn sẽ phải dịch ngược tất cả các lọ và thêm chúng như là các dự án (và thêm các tham chiếu qua "Đường dẫn xây dựng Java") để đảm bảo rằng tất cả các triển khai trong các lọ bạn chọn được liệt kê.

* Phân cấp loại nhanh, ctrl  +  T  sẽ hiển thị một cấu trúc tương tự trong một loại chú giải công cụ / tự động hoàn thành. Nhưng hệ thống phân cấp kiểu hoàn chỉnh sẽ hữu ích hơn cho loại phân tích bạn định làm.


10
2017-09-12 09:03





Có nút radio "Những người triển khai" trong Tìm kiếm Java.


7
2018-02-28 14:51



Làm thế nào nó không trả lời được câu hỏi? Mở Tìm kiếm Java, nhập tên giao diện, nhấp vào "Người triển khai" và bạn sẽ "tìm lớp nào triển khai một giao diện cụ thể". - stackexchanger


Hoặc nhấp chuột phải và chọn Quick Type Hierarchy cho một trình đơn kéo xuống của các giao diện mở rộng và triển khai các lớp.


1
2017-09-12 09:04



Khi tôi nhấp chuột phải và chọn Phân loại Loại nhanh Tôi chỉ thấy Giao diện không phải lớp đã triển khai nó - Am1rr3zA


Ctrl + H (Tùy chọn tìm kiếm) Mở phối cảnh Tìm kiếm Java và nhập tên giao diện, nhấp vào nút radio Thực hiện và bạn sẽ tìm thấy lớp nào triển khai một giao diện cụ thể. Giống như câu trả lời từ stackexchanger ở trên


0
2017-11-03 16:31



Những câu trả lời này sẽ không phải lúc nào cũng theo thứ tự ... - Broots Waymb


Chọn tên lớp, sau đó chọn 'F4' trong Eclipse (môi trường Windows)


0
2017-09-20 21:41