@Deprecated 注释没有编译警告?

Omk*_*kar 5 java annotations

根据Oracle上的Java 教程,如果使用标有 @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();
}
Run Code Online (Sandbox Code Playgroud)

}

Pav*_*ngh 4

来自文档

如果已弃用的项在本身已弃用的实体中使用,或者is used within the same outermost class在带注释以抑制警告的实体中使用,则编译器会抑制弃用警告。

因此,您的函数在声明它的同一个类中使用,只需尝试在其他类中使用即可。

在下图中,该wontShowWarning函数不会生成任何警告show(),但来自另一个类的函数会生成任何警告。

API设计本身可以有不同的规则,因为假设最外层的类将根据新的设计进行修改,因此这只是对其他类的指示

在此输入图像描述