java - 如何找到接口方法的 ONE 实现的用法
问题描述
我有一个包含数百个接口实现的项目。我想在该接口的一个实现中找到方法的用法。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 bark 方法,单击 show usages,我只想查看 main.java 中的 onyx.bark(50) 行,而不是 main.java 中的两个 bark 用法。
我意识到,如果我在主类中使用 Lab onyx = new Lab() 和 Collie lassie = new Collie(),查找引用将起作用,但这不是项目的编写方式。当类型是接口时,IDE 可能无法确定实现类,但它肯定会很有用。
解决方案
正如评论所说,正在使用的实现是在运行时确定的,因此 Intellij 不能将使用结果限制为一种实现。但是,Intellij 支持建议创建自定义范围来限制使用搜索。这有点帮助,尽管创建一个范围需要您知道您使用的一般区域,这可能是您首先进行使用搜索的内容。就我而言,我可以创建一个仅包含我们公司为项目编写的代码的范围。这将结果从 500+ 减少到大约 80。
要在 Intellij 中创建自定义范围,请选择 File-settings-appearance & behavior-Scopes。单击对话框中间的加号,选择本地或共享,并为其命名。在对话框的右半部分,您可以包含/排除/递归包含/排除递归库、包等。
然后,当您进行查找用法(或其他搜索)时,单击结果中的齿轮图标并在下拉列表中选择您的新范围。
推荐阅读
- java - Springboot 依赖:找到两个依赖并忽略限定符
- blogger - 在 Blogger 的固定链接中使用过去的发布日期
- function - Google BigQuery:函数中的“相关子查询”错误
- c# - WebClient DownloadString 给出 400 Bad Request 错误
- javascript - 如何使用 Vuetify 在 Nuxt js 中创建自己的全局断点插件(称为移动)?
- javascript - Web3.js 和 Next.js:部署 websocket 监听器
- javascript - Javascript Discord 获取个人资料图片
- php - 无法在 wordpress 中使用 ajax 处理表单
- java - Mono.defer() 的真实案例是什么?
- r - 循环覆盖输出