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

cld4siwp  于 2023-01-11  发布在  Java
关注(0)|答案(2)|浏览(223)

我有一个包含数百个接口实现的项目。我希望在该接口的一个实现中找到方法的用法。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可能无法确定实现类,但它肯定会很有用。

v1l68za4

v1l68za41#

正如评论所说,所使用的实现是在运行时确定的,因此Intellij不能将使用结果限制到一个实现。然而,Intellij支持建议创建一个自定义范围来限制使用搜索。这有点帮助,尽管创建一个范围要求您知道您使用的一般区域,这可能是您最初进行使用搜索的地方。在我的情况下,我可以创建一个范围,只包括我们公司对项目所做的代码。这将结果从500+减少到大约80。
要在Intellij中创建自定义作用域,请选择“文件”-“设置”-“外观和行为”-“作用域”。单击对话框中间的加号,选择“本地”或“共享”,并给予命名。在对话框的右半部分,您可以包括/排除/递归包括/递归排除库、包等。
然后,当您执行查找使用示例(或其他搜索)时,单击结果中的齿轮图标并在下拉列表中选择新的范围。

hs1rzwqc

hs1rzwqc2#

我有一个类似的情况,我必须找到外部库的用法,例如:

implementation 'com.android.volley:volley:1.1.1'

仅在我的Module:app中。因此,为此,请转到
1. Project在android studio的左侧选项卡中〉Android视图〉右键单击app目录〉AnalyzeAnalyaze Dependencies〉在弹出窗口中,选择仅Directory〉单击OK
然后Dependency Viewer选项卡将打开。在左侧树中选择搜索位置。为此,我在左侧树中单击app。然后在右侧树中,我必须选择要查找的外部库。为此,
打开External Dependencies〉单击com/android/volley
然后在左右树的底部,我可以看到Module:app中外部库的所有用法。
希望能有所帮助...

相关问题