如何查找接口方法的一个实现的用法

时间:2019-10-08 16:23:19

标签: java intellij-idea

我有一个包含数百个接口实现的项目。我只想在该接口的一个实现中找到方法的用法。 Intellij(和Eclipse)都向我展示了该方法在所有实现中的所有用法-数百种。

我在界面的一个实现中突出显示该方法,右键单击并选择“查找用法”,它向我展示了该方法在所有实现中的所有用法。

Intellij中的所有使用选项似乎都无法让我实现一个实现。

public interface Dog {
    void bark(int volume);
}
public class Lab implements Dog {
    public void bark(int volume) {
        System.out.println("woof");
    }
}
public class Collie implements Dog {
    public void bark(int volume) {
        System.out.println("woof");
    }
}
public class Main {

    public static void main(String[] args) {
        Dog onyx = new Lab();
        Dog lassie = new Collie();


        onyx.bark(50);
        lassie.bark(20);
    }
}

如果我突出显示Lab树皮方法,请单击显示用法,我只想在main.java中看到onyx.bark(50)行,而不是在main.java中看到两个树皮用法。

我意识到,如果在主类中使用Lab onyx = new Lab()和Collie lassie = new Collie(),则查找引用将起作用,但这不是项目的编写方式。当类型是接口时,IDE可能无法确定实现类,但这肯定会有用。

1 个答案:

答案 0 :(得分:0)

正如评论所说,所使用的实现是在运行时确定的,因此Intellij不能将使用结果限制为一个实现。但是,Intellij支持建议创建一个自定义范围以限制使用情况搜索。尽管创建作用域需要您了解使用的一般区域,但这可能会有所帮助,这也许是您首先进行使用情况搜索的地方。就我而言,我可以创建一个范围,该范围仅包含我们公司对该项目编写的代码。这样结果从500+减少到大约80。

要在Intellij中创建自定义范围,请选择File-settings-appearance&behavior-Scopes。单击对话框中间的加号,选择本地或共享,并为其命名。在对话框的右半部分,您可以包含/排除/递归包含/递归排除库,包等。

然后,当您查找用法(或其他搜索)时,单击结果中的齿轮图标,然后在下拉列表中选择新范围。