【问题标题】:Find Method usages only for specified class in Intelij-Idea仅在 Intellij-Idea 中查找指定类的方法用法
【发布时间】:2016-03-03 18:14:57
【问题描述】:

我正在使用 IntelliJ IDEA,但在查找方法使用时遇到问题。

假设我有接口 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() 方法?

【问题讨论】:

    标签: java intellij-idea


    【解决方案1】:

    我正在使用 IntelliJ IDEA 15.0.1。

    我认为您在使用“查找用法”功能时看到的内容取决于上下文。

    如果将光标放在方法名称 Developer.startWork 并调用 find usages ,您应该会看到一个小对话框。你被问到“你想找到基本方法的用法吗?” .

    如果您说“不”,并且在您的源代码中您只是通过基类或接口调用了该方法(在您的示例中为Worker.start()),IDEA 不会向您显示任何命中。没错。

    如果你通过Developer.startWork()调用被覆盖的方法,并在对话框中按“否”,那么你会看到具体实现的用法。

    更新:

    【讨论】:

    • 感谢您的回复。但很抱歉,我找不到这样的选择。仍然显示相同的结果。
    【解决方案2】:

    看了@JimHawkins 的回答后,我觉得大象还在房间里:) 问题是,你想看看Developer.startWork() 是在哪里被实际调用的,还是你想看看它是在哪里被静态引用的? ?

    例如:

    Developer developer = new Developer();
    developer.startWork(); // you want to find only this?
    Worker worker = developer;
    worker.startWork(); // ..or this as well?
    

    find usages 方法只能告诉静态引用给定方法的位置,而不是实际使用的位置(即通过polymorphism 的机制确定运行时)。

    【讨论】:

      【解决方案3】:

      使用 Ctrl+Shift+Alt+F7 (+⇧++F7 for Mac)应该显示 Jim Hawkins 回答的提示。

      见:https://www.jetbrains.com/help/idea/find-usages-method-options.html

      当您使用此对话框 Ctrl+Shift+Alt+F7 搜索方法实现的用法时,IntelliJ IDEA 将询问您是否要搜索基本方法。使用任何其他查找用法操作(例如 Alt+F7 或 Ctrl+Alt+F7),基本方法将自动包含在搜索结果中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-02-09
        • 2016-01-15
        • 2011-04-14
        • 2020-04-09
        • 2015-02-15
        • 1970-01-01
        相关资源
        最近更新 更多