17

我想找到抽象方法在哪里实现,在哪个类中?Eclipse 中是否有一个链接,如调用层次结构/打开声明或类似的东西,显示实现的方法在哪里?

4

4 回答 4

25

快速方法:

  • 按住Ctrl,将鼠标悬停在方法名称上,然后选择“Open Implementation”。

  • 单击方法名称并按CtrlT

  • 右键单击方法名称→“快速类型层次结构”。

如需更多导航功能,请参阅ADTC 的帖子

于 2013-09-20T11:58:29.720 回答
15

这里有很好的答案!我发现了一个额外的技巧来快速从实施导航到实施。

Eclipse 使用临时弹出窗口来显示“实现或定义'Class.method()'的类型”而不是可以固定在侧面的永久视图,这很奇怪。

此弹出窗口的优点是,当您单击一个实现类型时,您会直接进入方法实现。这个弹窗的缺点是一旦你这样做它就会关闭,并且没有办法永久固定它。

类型层次结构显示了相同的实现类型列表(因为它们是抽象类的子类)。由于它是视图,因此可以将其永久固定在侧面。但是,如果您在此处双击类型名称,则会转到该类型的声明行。然后,您必须自己找到抽象方法的实现。

除了,您不必使用以下技巧:

  1. 右键单击抽象方法并单击Open Type Hierarchy1类型层次结构视图中,您会注意到以下内容:
    • 抽象类类型的所有子类型都列在主列表(P)中。2
    • 抽象类的所有成员都列在二级列表(S)中。3
    • 您右键单击的抽象方法在二级列表中被选中。4

  2. 单击二级列表上方的 Lock View and Show Members in Hierarchy按钮(1) 。
    • 所选方法及其实现将列在每个子类型以及父类型下的主列表中。

您现在可以通过单击或双击主列表中列出的方法在实现之间快速导航。

屏幕截图指示提到的各个部分

1您也可以单击方法名称并按 F4。
2如果未列出,请单击列表上方的显示类型层次结构 (2)显示子类型层次结构 (3)按钮之一。
3如果没有二级列表,单击视图菜单 (4),选择布局> [除层次结构之外的任何选项]。
4如果没有选中,直接点击选中即可。

于 2014-08-13T10:10:21.770 回答
4

如果您Ctrl + mouse hover使用一种方法,您会看到一个弹出窗口,您可以在其中从一系列选项中进行选择,其中一个是“开放式实施”。如果单击,您将看到所有实现的列表。

它也可以用来查看声明和/或超级实现,所以它非常有用。

如果您将光标放在该方法上,您只需按下即可Ctrl + T获得相同的效果。

如果要在“类型层次结构”视图中显示结果,请使用F4键。

于 2013-09-20T11:59:23.577 回答
4

您可以为此使用 TypeHierarchy 视图。下面是 Spring 框架抽象类 FrameworkServlet 的类型层次视图示例:

在此处输入图像描述

在左窗格中,您可以看到类继承树。左窗格中类名旁边的“A”图标表示 FrameworkServlet 是一个抽象类。在右窗格中,突出显示的方法 doService( request, response ) 也有“A”图标,表明这是一个抽象方法。

现在,如果我们单击类 DispatcherServlet,它是一个具体(非抽象)类,您会看到:

在此处输入图像描述

在这种情况下,DispatcherServlet 的 doService 方法没有“A”图标,而是有向上的三角形,表明它覆盖了超类方法。

于 2013-09-20T12:07:15.370 回答