我有一个包含数百个接口实现的项目。我只想在该接口的一个实现中找到方法的用法。 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可能无法确定实现类,但这肯定会有用。
答案 0 :(得分:0)
正如评论所说,所使用的实现是在运行时确定的,因此Intellij不能将使用结果限制为一个实现。但是,Intellij支持建议创建一个自定义范围以限制使用情况搜索。尽管创建作用域需要您了解使用的一般区域,但这可能会有所帮助,这也许是您首先进行使用情况搜索的地方。就我而言,我可以创建一个范围,该范围仅包含我们公司对该项目编写的代码。这样结果从500+减少到大约80。
要在Intellij中创建自定义范围,请选择File-settings-appearance&behavior-Scopes。单击对话框中间的加号,选择本地或共享,并为其命名。在对话框的右半部分,您可以包含/排除/递归包含/递归排除库,包等。
然后,当您查找用法(或其他搜索)时,单击结果中的齿轮图标,然后在下拉列表中选择新范围。