-
Enhanced Deprecation
废弃API,一般可以理解为不推荐开发者在项目中使用的API,当前为了保持兼容,在JDK中保留,未来可能会删除。
作为开发者,使用工具jdeprscan
可以方便的查找现有代码中存在的一些废弃API的信息。 -
Deprecation in the JDK
废弃API出现的部分原因:- 一些比较危险的API,比如
Thread.stop
。 - 变更API的设计,提供新的API,导致已有的API被废弃。
- 新的API,提供更好的使用体验,导致已有的API被废弃。
- 即将被移除的API。
当前被废弃的API,可参考清单。
- 一些比较危险的API,比如
-
How to Deprecate APIs
在类或者方法上增加注解@Deprecated
,比如:-
标记版本号
@Deprecated(since="<version>")
<version>
为版本号的说明,比如1.2
,表示从1.2
版本开始,相关API废弃,不再推荐开发者使用。 -
标记未来的删除可能性
@Deprecated(forRemoval=<boolean>)
forRemoval
为boolean
类型,取值包括true
和false
。取值为true
,提示开发者相关API后续可能会被删除。 -
混合使用
@Deprecated(since="9", forRemoval=true)
在API的文档中增加标记
@deprecated
,提供更丰富的说明。
在现代的IDE中,@Deprecated
和@deprecated
需要成对使用。 -
-
编译Java代码时,增加选项
-Xlint:deprecation
和-Xlint:removal
,可以获得废弃API的相应提示信息。
编译命令的样例,如下:javac -Xlint:deprecation -Xlint:removal src/example/DeprecationExample.java
出于兼容的原因,消除废弃API的使用,需要一个过程,因此为了避免恼人的警告影响心情,对于一些确认无伤大雅的废弃API,可以在项目代码中增加注解,即使用如下方式屏蔽相应的编译警告。
- 使用
@SuppressWarnings("deprecation")
,屏蔽废弃API的编译警告。 - 使用
@SuppressWarnings("removal")
,屏蔽废弃API可能被移除的编译警告。 - 使用
@SuppressWarnings({"deprecation","removal"})
,同时屏蔽废弃API和可能被移除的编译警告。
- 使用
-
Running jdeprscan
jdeprscan
的使用方法,可参考文档。