簡體   English   中英

顯示同一類方法的已棄用警告

[英]Show deprecated warnings for methods of same class

使用eclipse,我想在我使用的任何方法標記為@Deprecated立即看到警告。 如果是這樣,方法調用被正確划掉,但如果方法來自同一個類,則eclipse不會發出警告。 請參見下面的截圖。

Eclipse_warnings

為了更好地再現,我還將提供textform中的代碼:

/* MainClass.java */
public class MainClass {
    public static void main(String[] args) {
        MainClass.foo();
        MemberClass.foo();
        OtherClass.foo();
    }
    @Deprecated
    public static void foo() {
        return;
    }
    private static class MemberClass {
        @Deprecated
        protected static void foo() {
            return;
        }
    }
}

/* OtherClass.java */
public class OtherClass {
    @Deprecated
    public static void foo() {
        return;
    }
}

而只有OtherClass.foo()生成警告。 為什么? 我怎樣才能解決這個問題?

  • Enable project specific settings已取消激活
  • Window - > Preferences - > Java - > Compiler - > Errors/Warnings - >如果完全設置為WarningDeprecated and restricted API ,如上圖所示。

注意: Eclipse沒有顯示已棄用的警告? 沒有關系

@Deprecated注釋的確切定義不在javadoc中,而是實際上在Java語言規范的第9.6.4.6節中。

基本上它表示使用不推薦使用的元素會產生警告, 除非

使用和聲明都在同一個最外層。

由於MainClass.foo()MemberClass.foo()都在MainClass ,並且您對它們的調用也在MainClass ,因此不會生成任何警告。

OtherClass.foo()的調用不在同一個最外層,因此生成警告。

我相信這條規則的原因是可以假定最外層或頂層類中的代碼可以一起維護和發展。 不推薦使用元素通常是代碼“外部”的信號,可能由其他人維護,即該元素會發生某些事情。 通常在課堂上適用不同的規則。 內部使用已棄用的元素(如私有元素)可能完全沒問題。

編譯器或IDE發出超出JLS要求的其他警告可能是合法的,例如在同一最外層中使用不推薦使用的元素。 但是,我不知道有任何系統可以做到這一點。

但是你正在使用Eclipse,我確信它和其他IDE一樣可以很容易地找到類中某些元素的所有用法。

暫無
暫無

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

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