Làm cách nào để tìm lớp nào triển khai một giao diện cụ thể trong Eclipse?


88

Tôi có một ứng dụng dưới dạng tệp JAR với nhiều phụ thuộc. Vì lý do nào đó, tôi cần 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 nhất định trong dự án, có cách nào để tìm (các) lớp triển khai nó không? Có thể là trường hợp giao diện được triển khai trong thư viện khác mà tôi chưa dịch ngược. Có thể làm điều này cho loại lớp học này không?

Câu trả lời:


114

Nhấp chuột phải vào giao diện và chọn "Hệ thống phân cấp loại mở". Sau đó nhấp vào "Hiển thị hệ thống phân cấp kiểu con".


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 con", tôi chỉ thấy Giao diện không phải lớp đã triển khai nó.
Am1rr3zA

1
Sau đó, nó có nghĩa là không có lớp nào trong Java Build Path của dự án triển khai giao diện này. Tất nhiên Eclipse 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 là tôi phải Thêm tệp jar khác vào Đường dẫn xây dựng Java?
Am1rr3zA

5
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 triển khai 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 mình nhưng vẫn không hiển thị cho tôi cách triển khai. và tôi chắc chắn rằng một số lớp thực hiện nó vì thông qua Reflection tôi có thể sử dụng nó.
Am1rr3zA

47

Thử Ctrl+ Tsau khi chọn tên lớp; sẽ hoạt động trong Java Perspective.


10

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

Tuy nhiên, điều này sẽ chỉ liệt kê các mục trong những dự án được giới thiệu ("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 jar và có một jar khác mà bạn chưa phân rã, thì các triển khai (của giao diện) trong jar đó sẽ không được liệt kê.

Ngoài ra, giả sử bạn đã dịch ngược một jar dưới dạng một dự án và có một dự án khác đang đề cập đến jar, chứ không phải dự án đã dịch ngược, 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 dưới dạng dự án (và thêm các tham chiếu thông qua "Java Build Path") để đảm bảo tất cả các triển khai trong các lọ mà bạn chọn đều được liệt kê.

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


8

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


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

1

Hoặc nhấp chuột phải và chọn Quick Type Hierarchymenu kéo xuống gồm các giao diện mở rộng và các lớp triển khai.


Khi tôi nhấp chuột phải và chọn nhanh Loại Hierarchy Tôi chỉ thấy giao diện không phải là lớp thực hiện nó
Am1rr3zA

0

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 Người triển khai 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


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.