我有一个包含数百个接口实现的项目。我希望在该接口的一个实现中找到方法的用法。Intellij(和Eclipse)都向我展示了该方法在所有实现中的所有用法--数百个。
我突出显示了接口的一个实现中的方法,右键单击并选择“find usages”,它将显示该方法在所有实现中的所有用法。
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 bark方法,单击show usages,我只想看到www.example.com中的onyx.bark(50)行main.java,而不是main.java中的两个bark用法。
我意识到,如果在主类中使用Lab onyx = new Lab()和牧羊犬lassie = new Collie(),find references就可以工作,但项目不是这样编写的。当类型是接口时,IDE可能无法确定实现类,但它肯定会很有用。
2条答案
按热度按时间v1l68za41#
正如评论所说,所使用的实现是在运行时确定的,因此Intellij不能将使用结果限制到一个实现。然而,Intellij支持建议创建一个自定义范围来限制使用搜索。这有点帮助,尽管创建一个范围要求您知道您使用的一般区域,这可能是您最初进行使用搜索的地方。在我的情况下,我可以创建一个范围,只包括我们公司对项目所做的代码。这将结果从500+减少到大约80。
要在Intellij中创建自定义作用域,请选择“文件”-“设置”-“外观和行为”-“作用域”。单击对话框中间的加号,选择“本地”或“共享”,并给予命名。在对话框的右半部分,您可以包括/排除/递归包括/递归排除库、包等。
然后,当您执行查找使用示例(或其他搜索)时,单击结果中的齿轮图标并在下拉列表中选择新的范围。
hs1rzwqc2#
我有一个类似的情况,我必须找到外部库的用法,例如:
仅在我的
Module:app
中。因此,为此,请转到1. Project
在android studio的左侧选项卡中〉Android
视图〉右键单击app
目录〉Analyze
〉Analyaze Dependencies
〉在弹出窗口中,选择仅Directory
〉单击OK
。然后
Dependency Viewer
选项卡将打开。在左侧树中选择搜索位置。为此,我在左侧树中单击app
。然后在右侧树中,我必须选择要查找的外部库。为此,打开
External Dependencies
〉单击com/android/volley
。然后在左右树的底部,我可以看到
Module:app
中外部库的所有用法。希望能有所帮助...