@Deprecated注释没有编译警告?

时间:2016-11-17 04:19:23

标签: java annotations

根据Java tutorial on Oracle,如果使用标记为@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();
}

}

2 个答案:

答案 0 :(得分:4)

From docs

  

如果不推荐使用的项目,编译器会禁止弃用警告   在一个实体中使用,该实体本身已被弃用或is used within the same outermost class或在注释的实体中使用   抑制警告。

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

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

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

enter image description here

答案 1 :(得分:0)

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

javac -Xlint className.java

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