如何使IDE跳转到重写的toString()方法实现?

3

我正在使用 Eclipse Neon。我处理的是一个庞大的类层级结构,例如:

class AbstractBase { ...

class ImplA extends AbstractBase { ...

class ImplAB extends ImplA { ...

假设我在Eclipse中打开了ImplAB。我知道它的一些祖先使用了@ Override toString()方法,我想跳转到该源代码。
换句话说:给定一个类X,它继承了一些方法foo(),但本身没有覆盖foo() - 是否有一种快速的方法可以跳转到适用于X的foo()版本?
更准确地说:假设光标位于类X的某个位置,并且在类X本身中没有对该方法的调用。
解决方法是在源代码的某处快速输入foo(),然后按F3键查看 - 但是然后我必须撤消该更改(是的,在启用自动保存时,这可能是个问题)。
顺便说一下:如果在Eclipse中不可能实现该功能,那么IntelliJ是否具备此功能?

1
open declaration 不起作用吗? - Scary Wombat
3
解决方法:对 ImplA 对象调用 toString() 方法,然后在该方法调用上按 Ctrl + 单击以查看实现。 (在 Eclipse 中可能有其他组合键) - Tom
@ScaryWombat 打开声明 / F3 的作用是打开您当前选择的“东西”。但我没有任何可以点击/按F3的东西。我想我必须更新我的问题。 - GhostCat
1
关于您的编辑@GhostCat:如果您在其工具栏中点击“Inherited”按钮,IntelliJ可以通过“Structure”工具窗口(Alt + F7)支持此功能。 如果您双击列表项,它将导航到其实现。 - Salem
加一不删 - 本周最有用的问题 - Scary Wombat
显示剩余4条评论
1个回答

6
TL;DR:您可以双击Ctrl+O来查看继承成员的简单弹出窗口。

当光标位于类名中时,您可以使用类型层次结构窗口(快捷键:F4)。在Child旁边,单击Show all inherited members图标:

Image


如果您想要更快捷的方法(包括搜索栏),只需双击Ctrl+O即可开始输入:

Image


随着您编辑问题,这也存在于IntelliJ中,通过结构工具窗口Alt+7):

Image


@GhostCat 我不太确定那是否存在。不过,当该部分获得焦点时,您可以开始输入并导航到该方法名称,因为它是一个常规列表。唯一的缺点是(在Eclipse中),它似乎显示了此方法的所有父级出现(例如 ObjectBase)。编辑:我添加了另一种可能更像“快捷方式”的方法。 - Salem
1
在IntelliJ中,您可以按两次Ctrl+F12(文件结构弹出窗口),然后键入toString或您正在查找的任何方法,也许这样会更快。 - xander
@xander 我之前不知道这个 - 这是一个好用的功能! 似乎和 Ctrl+O Ctrl+O 一样,也许这些集成开发环境更相似。 :P - Salem
很好。CTRL O 两次...我建议你稍微编辑一下你的答案,使其更加清晰明了。比如将那句话移到答案的开头。 - GhostCat

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