我正在使用Intelijidea,我遇到方法使用发现的问题。
假设我有接口Worker。
public interface Worker {
void startWork();
void endWork();
}
我有两个实现。
public class Develper implements Worker {
@Override
public void startWork() {
System.out.println("Developer Start Working");
}
@Override
public void endWork() {
}
}
public class Qa implements Worker {
@Override
public void startWork() {
System.out.println("QA start Work");
}
@Override
public void endWork() {
}
}
我打开Developer类并尝试查找startWork的用法。 我只想查看Developer.startWork实现方法的用法。
但是当我找到使用它时,它显示了Developer和Qa startWork方法的用法。 如何在查找Developer.startWork使用时避免使用Qa.startWork方法。
请指教。
答案 0 :(得分:3)
我正在使用IntelliJ IDEA 15.0.1。
我认为使用“查找用法”功能时所看到的内容取决于上下文。
如果将光标放在方法名Developer.startWork
中并调用find usages
,则应该会看到一个小对话框。你被问到“你想找到基本方法的用法吗?”
如果您说“No”,并且在您的来源中您只通过基类或接口(在您的示例中为Worker.start()
)调用该方法,则IDEA不会向您显示任何匹配。多数民众赞成。
如果您通过Developer.startWork()
调用覆盖的方法,并在对话框中按“否”,那么您将看到具体实现的用法。
答案 1 :(得分:0)
在阅读@JimHawkins的答案之后,我认为大象还在房间里:)问题是,你想看看Developer#startWork实际被调用的地方,还是你想看看静态引用它的位置?
例如:
dic1 = {'k': 'dic2'}
dic2 = {'key_1': 'value'}
exec('print ' + dic1['k'] + "['key_1']")
find usages方法只能告诉静态引用给定方法的位置,而不能告诉它实际使用的位置(通过polymorphism机制确定运行时)。
答案 2 :(得分:0)
使用 Ctrl + Shift + Alt + F7 应该显示Jim Hawkins回答的提示。
请参阅:https://www.jetbrains.com/help/idea/find-usages-method-options.html
当使用此对话框Ctrl + Shift + Alt + F7搜索方法实现的用法时,IntelliJ IDEA将询问您是否要搜索基本方法。使用其他任何“查找用法”操作(例如Alt + F7或Ctrl + Alt + F7),基本方法将自动包含在搜索结果中。