[英]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.