没有使用@Deprecated注释的编译警告?

根据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();
}

}


从文档

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

所以你的函数正在被声明的同一个类中使用,只是试图在其他类中使用。

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

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

在这里输入图像描述


使用命令提示符编译和运行Java程序:

javac -Xlint className.java

链接到屏幕截图:https://i.stack.imgur.com/fwVjQ.png

链接地址: http://www.djcxy.com/p/47291.html

上一篇: No compilation warning with @Deprecated annotation?

下一篇: Which @NotNull Java annotation should I use?