没有使用@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