【发布时间】: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
Structuretool window (Alt+F7) if you click the "Inherited" button in its toolbar。如果你双击列表项,它会导航到它的实现。
标签: java eclipse intellij-idea