【问题标题】:Have IDE jump to overridden toString() method implementation?IDE 是否跳转到覆盖的 toString() 方法实现?
【发布时间】:2018-01-12 01:46:08
【问题描述】:

我正在使用日食霓虹灯。我正在处理一个广泛的类层次结构,例如:

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 是否有这个功能?

【问题讨论】:

  • open declaration 不起作用吗?
  • 解决方法:在 ImplA 的对象上调用 toString(),然后 ctrl+单击该方法调用以转到实现。 (可能是 Eclipse 上的另一个组合键)
  • @ScaryWombat 打开声明/F3 通过打开您当前选择的“事物”来工作。但我没有任何东西可以点击/按 f3。我想我必须更新我的问题。
  • @Tom 是的,解决方法。但我更喜欢 workaround 的解决方案。尤其是让我修改源代码并迫使我记住撤消该更改的解决方法。
  • 关于您的编辑@GhostCat:IntelliJ does support this via the Structure tool window (Alt+F7) if you click the "Inherited" button in its toolbar。如果你双击列表项,它会导航到它的实现。

标签: java eclipse intellij-idea


【解决方案1】:

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


当光标位于类名中时,您可以使用type hierarchy window(快捷方式:F4)。 在Child 旁边,点击Show all inherited members 图标:


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


当您编辑您的问题时,这也存在于 IntelliJ 中,通过 Structure tool window (Alt+7):

【讨论】:

  • @GhostCat 我不太确定是否存在。但是,您可以在该部分具有焦点时开始输入,并且它会导航到该方法名称,因为它是一个普通列表。一个缺点是(在 Eclipse 中)它似乎显示了此方法的 all 父项出现(例如 ObjectBase)。编辑:我添加了另一种可能更“快捷方式”的方式。
  • 您可以在 IntelliJ 中执行的操作是点击 Ctrl+F12(文件结构弹出窗口)两次,然后输入 toString 或您正在寻找的任何方法,也许这样会更快。
  • @xander 我不知道 - 这是一个不错的功能!看起来和 Ctrl+O Ctrl+O 一样,也许 IDE 比我想象的更相似:P
  • 优秀。 CTRL O 两次...我建议您稍微编辑一下答案以使其更清楚。就像把那句话移到答案的开头。
猜你喜欢
  • 2012-09-16
  • 1970-01-01
  • 1970-01-01
  • 2018-01-10
  • 2018-07-05
  • 1970-01-01
  • 1970-01-01
  • 2014-12-28
  • 2015-08-28
相关资源
最近更新 更多