簡體   English   中英

如何找到接口方法的一個實現的用法

[英]How to find usages of ONE implementation of an interface's method

我有一個包含數百個接口實現的項目。 我想在該接口的一個實現中找到方法的用法。 Intellij(和 Eclipse)都向我展示了該方法在所有實現中的所有用法——數百個。

我突出顯示接口的一個實現中的方法,右鍵單擊並 select “查找用法”,它顯示了該方法在所有實現中的所有用法。

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 方法,單擊顯示用法,我只想看到 main.java 中的 onyx.bark(50) 行,而不是 main.java 中的兩個 bark 用法。

我意識到,如果我在主 class 中使用 Lab onyx = new Lab() 和 Collie lassie = new Collie(),查找引用將起作用,但這不是項目的編寫方式。 當類型是接口時, IDE 可能無法確定實現 class ,但這肯定會有用。

正如評論所說,正在使用的實現是在運行時確定的,因此 Intellij 不能將使用結果限制為一種實現。 但是,Intellij 支持建議創建自定義 scope 以限制使用搜索。 這有點幫助,盡管創建 scope 要求您知道您使用的一般區域,這可能是您首先進行使用搜索的內容。 就我而言,我可以創建一個 scope,其中僅包含我們公司為該項目制作的代碼。 這將結果從 500+ 減少到大約 80。

要在 Intellij 中創建自定義 scope,select 文件-設置-外觀和行為-范圍。 單擊對話框中間的加號,select 本地或共享,並為其命名。 在對話框的右半部分,您可以包含/排除/遞歸包含/排除遞歸庫、包等。

然后,當您進行查找用法(或其他搜索)時,單擊結果中的齒輪圖標,然后在下拉列表中單擊 select 您的新 scope。

我有一個類似的案例,我必須找到外部庫的用法,例如:

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

在我的Module:app中。 所以,為此,go 到

1. Project android studio 左側選項卡中的項目 > Android查看 > 右鍵單擊app目錄 > Analyze > Analyaze Dependencies > 在彈出的 window, select 僅Directory > 單擊OK

然后Dependency Viewer選項卡將打開。 Select 在左側樹中搜索的位置。 為此,我單擊左側樹中的app 然后在正確的樹中,我必須 select 我正在尋找的外部庫。 為了那個原因,

打開External Dependencies > 單擊com/android/volley

然后在左右樹的底部,我可以看到我的Module:app中外部庫的所有用法。

希望能幫助到你...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM