外部正在调用或者二方库依赖的接口,不允许修改方法签名,避免对接口调用方产生影响。接口过时必须加 @Deprecated 注解,并清晰地说明采用的新接口或新服务是什么。
这其中提到了 @Deprecated 注解,在之前的开发过程中没遇到过这个注解,于是查了下他的功能:
简单来讲就是,若某类或某方法加上该注解之后,表示此方法或类不再建议使用,调用时也会出现删除线,但并不代表不能用,只是说,不推荐使用,因为还有更好的方法可以调用。
或许有人会问 为什么会出现加这个注解呢,直接在写方法的时候定义一个新的不就好了吗?
因为在一个项目中,工程比较大,代码比较多,而在后续开发过程中,可能之前的某个方法实现的并不是很合理,这个时候就要新加一个方法,而之前的方法又不能随便删除,因为可能在别的地方有调用它,所以加上这个注解,就方便以后开发人员的方法调用了。
--------------------------------------
@Deprecated 表示此方法已废弃、暂时可用,但以后此类或方法都不会再更新、后期可能会删除,建议后来人不要调用此方法。
用法:
此注解可用于类上、方法上、属性上。
通常在给定此注解后,应该在方法注释中同样说明:废弃此方法后的代替方法是哪个、处理原逻辑代替方案是什么 、本身不打算代替,而是直接清除的,则最好给出会清除此方法的具体代码版本号 。
相似注解: @deprecated :
有此注解后,Javadoc 工具生成文档时会标注此类/接口、方法、字段已经被废止。
调用有 @Deprecated 注解的方法的风险:
可能导致错误、可能在以后版本中代码不兼容、可能在以后版本中原方法已被删除、可能已有更优的方案取代它。
坚持调用时,开发工具也会在调用处方法上加上横线,划掉方法:表示被调用方法已经过时。
Java 9 中注解增加了两个新元素:since 和 forRemoval。
since: 指定已注解的API元素已被弃用的版本。
forRemoval: 表示在将来的既定版本中会被删除,应该迁移 API。
如:
@Deprecated(since = "1.2", forRemoval = true)