如何找到在Eclipse中实现特定接口的类?


88

我有一个具有许多依赖项的JAR文件应用程序。由于某种原因,我需要反编译其中一个库,并使用Eclipse将其打开。对于项目中的给定接口,是否可以找到实现它的类?该接口可能是在我尚未反编译的其他库中实现的。是否可以针对此类课程呢?

Answers:


114

右键单击界面,然后选择“打开类型层次结构”。然后单击“显示子类型层次结构”。


它没有显示任何内容,当我单击“显示子类型层次结构”时,我只是看到接口而不是类实现了它。
Am1rr3zA 2011年

1
这意味着该项目的Java Build Path中没有类实现该接口。Eclipse当然必须了解潜在的类:包含它们的jar文件必须在项目的Java Build Path中。
JB Nizet

您是说我必须将其他jar文件添加到Java Build Path?
Am1rr3zA 2011年

5
当然是。Eclipse只知道类路径中的类。它不会扫描整个硬盘以找到实现您的接口的某些类。
JB Nizet

我将其他Jar文件添加到我的Java构建路径中,但仍然没有向我显示实现。并且我确定某个类可以实现它,因为通过反射可以使用它。
Am1rr3zA 2011年

47

选择类名称后,尝试Ctrl+ T。应该可以在Java Perspective中使用。


10

您可以在项目上“显示类型层次结构”(右键单击以选择此选项,或F4在项目突出显示时按)*。

但是,这只会列出那些引用的项目中的项目(“从属”)。没有其他人。

因此,如果您已经反编译了一个jar,并且还有另一个您尚未反编译的jar,那么该jar中的(接口的)实现将不会列出。

另外,假设您已经将jar分解为一个项目,并且还有另一个引用jar的项目,而不是反编译的项目,那么其中的实现也不会列出。

因此,您将必须反编译所有jar,并将其添加为项目(并通过“ Java Build Path”添加引用),以确保列出了您选择的jar中的所有实现。

*快速类型层次结构ctrl + T 将在工具提示/自动完成类型的面板中显示类似的结构。但是完整的类型层次结构对于您打算进行的分析类型更有用。


8

Java Search中有一个单选按钮“ Implementors”。


3
它怎么不回答这个问题?打开Java Search,输入接口名称,单击“ Implementors”,您将“查找哪些类实现了特定的接口”。
stackexchanger


0

Ctrl + H(搜索选项)打开Java Search透视图,然后输入接口名称,单击Implementors单选按钮,您将发现哪些类实现了特定的接口。与上述stackexchanger的答案相同


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.