簡體   English   中英

僅在 Intelij-Idea 中查找指定類的方法用法

[英]Find Method usages only for specified class in Intelij-Idea

我正在使用 Intelijidea,但在查找方法用法時遇到問題。

假設我有接口 Worker。

public interface Worker {

    void startWork();
    void endWork();
}

我有兩個實現。

public class Develper implements Worker {
    @Override
    public void startWork() {
        System.out.println("Developer Start Working");
    }

    @Override
    public void endWork() {

    }
}

public class Qa implements Worker {
    @Override
    public void startWork() {
        System.out.println("QA start Work");
    }

    @Override
    public void endWork() {

    }
}

我打開 Developer 類並嘗試查找 startWork 的用法。 我只想查看 Developer.startWork 實現方法的使用情況。

但是當我找到用法時,它會同時顯示 Developer 和 Qa startWork 方法的用法。 在查找 Developer.startWork 用法時如何避免 Qa.startWork 方法的使用。

請指教。

使用Ctrl + Shift + Alt + F7 (對於 Mac 為 + + + F7 )應該會顯示 Jim Hawkins 回答的提示。

請參閱: https : //www.jetbrains.com/help/idea/find-usages-method-options.html

當您使用此對話框 Ctrl+Shift+Alt+F7 搜索方法實現的用法時,IntelliJ IDEA 將詢問您是否要搜索基本方法。 對於任何其他查找用法操作,例如 Alt+F7 或 Ctrl+Alt+F7,基本方法將自動包含在搜索結果中。

我正在使用 IntelliJ IDEA 15.0.1 。

我認為您在使用“查找用法”功能時看到的內容取決於上下文。

如果您將光標放在方法名稱Developer.startWork並調用find usages ,您應該會看到一個小對話框。 你被問到“你想找到基本方法的用法嗎?” .

如果您說“不”,並且在您的來源中您只通過基類或接口(在您的示例中為Worker.start()調用了該方法,則 IDEA 不會向您顯示任何命中。 那是正確的。

如果您通過Developer.startWork()調用覆蓋的方法,並在對話框中按“否”,那么您將看到具體實現的用法。

更新: 在此處輸入圖片說明

在此處輸入圖片說明

在此處輸入圖片說明

在此處輸入圖片說明

在閱讀@JimHawkins 的答案后,我認為大象還在房間里:) 問題是,您是想查看 Developer#startWork 的實際調用位置,還是想查看它靜態引用的位置?

例如:

Developer developer = new Developer();
developer.startWork(); // you want to find only this?
Worker worker = developer;
worker.startWork(); // ..or this as well?

find usages 方法只能告訴,給定的方法在哪里被靜態引用,但不能告訴它實際使用的位置(這是通過多態機制確定的運行時)。

暫無
暫無

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

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