2011-09-12 24 views
67

我有一个应用程序作为与许多依赖关系的JAR文件。出于某种原因,我需要反编译一个库并用Eclipse打开它。对于项目中的给定接口,是否有找到实现它的类的方法?可能是接口在其他库中实现的情况下,我还没有反编译。这种类可以做到这一点吗?如何找到哪些类在Eclipse中实现特定的接口?

回答

90

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

+0

它没有显示任何东西,当我点击“显示子类型层次结构”时,我只看到了Interface而不是实现它的类。 – Am1rr3zA

+0

然后这意味着项目的Java Build Path中没有任何类实现此接口。 Eclipse当然必须知道潜在的类:包含它们的jar文件必须位于项目的Java Build Path中。 –

+0

你的意思是我必须将其他jar文件添加到Java构建路径? – Am1rr3zA

37

尝试Ctrl + T选择类名后;应该在Java Perspective中工作。

+2

最佳答案!它应该被标记为他正确的一个。 –

10

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

但是,这将仅列出所引用项目中的项目(“依赖”)。不在其他人。

所以,如果你已经反编译了一个jar,并且还有另一个你没有反编译的jar,那么该jar中的实现(接口)将不会被列出。另外,假设你已经将一个jar作为一个项目进行了反编译,并且还有另外一个引用该jar的项目,而不是反编译的项目,那么它的实现也将不会被列出。

所以你必须反编译所有的jar文件并将它们添加为项目(并通过“Java Build Path”添加引用),以确保列出了所选jar包中的所有实现。

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

1

或右键单击并选择Quick Type Hierarchy以获得扩展接口和实现类的下拉菜单。

+0

当我用右键单击并选择快速类型层次结构时,我只是看到接口不是实现它的类 – Am1rr3zA

7

在Java搜索中有放射按钮“Implementors”。

+3

它如何不回答问题?打开Java搜索,输入接口名称,单击“实现者”,您将“找到哪些类实现特定的接口”。 – stackexchanger

0

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

+0

这些答案不总是以相同的顺序... –

相关问题