zl程序教程

您现在的位置是:首页 >  Java

当前栏目

关于 @Deprecated

2023-02-18 16:27:32 时间

注解 @Deprecated 在项目中很常见,它表示此方法已过时,暂时可用,但以后此类或方法不会再更新、后期可能会删除,建议来人别再调用此方法了。

然后还有新的API建议。

当然我们依然可以去引用过时的方法,不过在代码中会有个横线,对于强迫症患者来说,见到此线会不会有少许难受呢?哈哈哈~

@Deprecated 不仅仅用于官方的 api,我们自己项目中也可能有一些老旧的不成熟的方法调用,如果是不希望后续有人继续调用此方法,就应该友好的标记此方法弃用了。

在 Java 代码中,我们只需要在方法上面添加 @Deprecated 即可。

Java @Deprecated

然而在 Kotlin 中不一样,直接添加会出现错误:

Kotlin @Deprecated

原因是它在 @Deprecated 做了加强,它可以给注解添加参数,一方面解释弃用并建议使用替代 API 的信息,另外一方面还能指定可用于替换已弃用的函数,属性或类的代码片段。

@Deprecated(
    message = "Use newFunction instead",
    replaceWith = ReplaceWith(
        expression = "newFunction(key,value)",
    )
)
fun deprecatedFunction(key: String, value: String) {

}

fun newFunction(key: String, value: String){

}

由此点入Deprecated源码说明:

Deprecated

message: 解释弃用并建议使用替代 API 的信息。

replaceWith: 指定可用于替换已弃用的函数,属性或类的代码片段。如上面代码片段,在引用到了deprecatedFunction可以看到提示,直接点击替换则可替换成新的api了:

tip

level: 指定如何在代码中报告已弃用的元素用法,level 存在三种枚举。

DeprecationLevel

  • WARNING:仅用于警告 API 使用者,不会中断其编译或运行时使用。【默认】
  • ERROR:如果调用了这类API直接编译报错
  • HIDDEN:直接隐藏该 API,代码无法访问。

总结:

关于我们平常使用 @Deprecated,把replaceWith配置写全,真的是很方便后来者调用替换诶,小技巧。