如何在Eclipse中查找抽象方法的实现位置?

18

我想找到一个抽象方法是在哪个类中实现的。在Eclipse中是否有像调用层次结构/打开声明这样的链接,显示实现该方法的位置?


你可以尝试按F4键,以显示从你所看到的类/接口开始的类层次结构;或者在按住Ctrl键的同时,将鼠标悬停在抽象函数名称上,然后选择“打开实现”。 - ppeterka
4个回答

25

快速方法:

  • 按住 Ctrl,悬停在方法名称上,然后选择“打开实现”。

  • 单击方法名称,然后按下 CtrlT

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

要获得更多导航功能,请参见ADTC的帖子


谢谢你的回答!但是我不知道为什么这个抽象方法没有显示任何东西...其他的都可以!而且我确定它在项目的某个地方被实现并且工作了!这是我的方法签名: public abstract void onShiftRight(AjaxRequestTarget target); - ZelelB
当您选择方法并按下 Ctrl + T 时会发生什么? - Konstantin Yovkov
我现在在一个类中找到了这个方法。 使用“Ctrl + T”组合键,我会得到一个标题为“实现或定义_the_method_name的类型”的小窗口,但最后一个是抽象定义该方法的类。按住Ctrl并悬停在名称上,选择显示实现,然后我很快看到“正在搜索......的实现”,然后什么也没有发生! - ZelelB

15

这里有很好的答案!我发现了一个额外的技巧,可以快速导航到实现中。

比较奇怪的是,Eclipse使用临时弹出窗口显示"Types implementing or defining 'Class.method()'"而不是可以固定在侧边的永久视图。

这个弹出窗口的优点是,当你点击一个实现类型时,你会直接跳转到方法的实现。这个弹出窗口的缺点是,它一旦关闭就没有办法永久固定它。

类型层次结构显示相同的实现类型列表(因为它们是抽象类的子类)。由于它是视图,因此可以永久固定在侧面。然而,如果你在这里双击一个类型名称,你将进入类型的声明行,然后你必须自己找到抽象方法的实现。

但是,你有以下技巧:

  1. 右键单击抽象方法,然后单击打开类型层次结构1。在类型层次结构视图中,您会注意到以下内容:
    • 抽象类类型的所有子类型都列在主列表(P)2中。
    • 抽象类的所有成员都列在辅助列表(S)3中。
    • 你右键单击的抽象方法在辅助列表中被选择。4

  2. 单击次要列表上方的锁定视图并在层次结构中显示成员按钮(1)
    • 所选方法及其实现将在每个子类型及父类型下的主列表中列出。

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

1你还可以点击方法名称并按F4键。
2如果它们未列出,请单击列表上方的任一(2)“显示类型层次结构”或(3)“显示子类型层次结构”按钮。
3如果没有第二个列表,请单击(4)“视图菜单”,选择“布局”>[除“仅层次结构”以外的任何选项]。
4如果未选中,请单击它进行选择。


+1 很好的信息,可惜由于这个论坛的排名实现方式,一年后仍然没有被阅读(0票!)。我已经在顶部附上了一个链接,以增加其可见性。 - Pacerier
我不明白你的意思。我是4天前发布的答案,不是1年前 :) - ADTC
我的错,我误读了日期(以为8月13日是2013年8月)。Stackoverflow的用户界面...我甚至不知道该说什么。 - Pacerier
这不是一个论坛。参观一下吧 :) 它比论坛好多了。 - ADTC

4
如果你使用Ctrl + 鼠标悬停在一个方法上,你可以看到一个弹出窗口,其中有一系列选项,其中之一是"打开实现"。如果你点击它,你将看到所有实现的列表。
它也可以用来查看声明和/或超级实现,所以它非常有用。
如果你把光标放在方法上,你可以简单地按下Ctrl + T达到相同的效果。
如果你想在"类型层次结构"视图中显示结果,请使用F4键。

4
您可以使用TypeHierarchy视图来实现这一点。以下是Spring框架抽象类FrameworkServlet的类型层次结构视图示例:
在左侧窗格中,您会看到类继承树。左侧窗格中类名称旁边的“A”图标表示FrameworkServlet是一个抽象类。在右侧窗格中,高亮显示的doService(request,response)方法也具有“A”图标,表示这是一个抽象方法。
现在,如果我们单击DispatcherServlet类(一个具体而非抽象的类),则会看到以下内容:
在这种情况下,DispatcherServlet的doService方法没有“A”图标,而是具有向上的三角形,表示它覆盖了超类方法。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接