2016-11-17 98 views
4

根據Java tutorial on Oracle,如果使用標記爲@Deprecated註釋的不推薦方法,編譯器應該在編譯時給出警告。但通過以下代碼示例,我沒有在控制檯中收到任何警告。沒有使用@Deprecated註釋的編譯警告?

Java版本使用:1.8.0_112

請讓我知道,可以在這裏失蹤。 謝謝。

public class PreDefinedAnnotationTypesTest { 

/** 
* This method is deprecated. 
* @deprecated 
*/ 
@Deprecated 
public void m1(){ 

} 

public static void main(String[] args) { 
    PreDefinedAnnotationTypesTest obj = new PreDefinedAnnotationTypesTest(); 
    obj.m1(); 
} 

}

回答

4

From docs

編譯器抑制廢棄警告如果棄用的項目本身已被棄用或is used within the same outermost class或在被註釋到一個實體用於一個實體內使用 壓制警告。

所以你的函數被用在聲明它的同一類中,只是試圖在其他類中使用。

在下圖中,wontShowWarning函數不會產生任何警告,儘管函數show()將來自另一個類。

的API設計可以有自己不同的規則,因爲據推測,最外面的類將被修改,根據新的設計所以這只是一個指示其他類

enter image description here