温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Kotlin中怎么使用Deprecated与Suppress注解

发布时间:2021-06-11 15:09:32 来源:亿速云 阅读:369 作者:Leah 栏目:移动开发

Kotlin中怎么使用Deprecated与Suppress注解?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

Deprecated

在 Java 方法中,如果需要废弃一个方法,只需要在方法钱加上 @Deprecated 即可,例如这样:

@Deprecated
public void test(){

}

但是如果在 Kotlin 代码中直接使用这个注释,就存在问题了:

Kotlin中怎么使用Deprecated与Suppress注解

Deprecated

翻看源码发现,Kotlin 中对 Deprecated 这个注解做了加强:

@Target(CLASS, FUNCTION, PROPERTY, ANNOTATION_CLASS, CONSTRUCTOR, PROPERTY_SETTER, PROPERTY_GETTER, TYPEALIAS)
@MustBeDocumented
public annotation class Deprecated(
 val message: String,
 val replaceWith: ReplaceWith = ReplaceWith(""),
 val level: DeprecationLevel = DeprecationLevel.WARNING
)

源码中 Deprecated 存在三个参数,其中第二个和第三个参数存在默认值,第一个参数 message 没有,也就是说,要想正常使用时,必须要带上 message 信息,正常写法是这样:

@Deprecated("xxx")
fun testKt(){

}

三个参数说明:

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

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

public enum class DeprecationLevel {
/** Usage of the deprecated element will be reported as a warning. */
WARNING,
/** Usage of the deprecated element will be reported as an error. */
ERROR,
/** Deprecated element will not be accessible from code. */
HIDDEN
}
  • WARNING:仅用于警告 API 使用者,不会中断其编译或运行时使用

  • ERROR:禁止使用该 API,如果调用了这类API直接编译报错

  • HIDDEN:直接隐藏该 API

replaceWith:指定可用于替换已弃用的函数,属性或类的代码片段。不明白?一图看懂:

Kotlin中怎么使用Deprecated与Suppress注解

replace

SuppressWarnings 与 Suppress

在 Java 代码中,如果需要消除一些编译时的警告,通常使用 @SuppressWarnings("xxx") 来进行解决的,而在 Kotlin 中,不能使用这个注解,需要使用Kotlin中内置的 @Suppress("xxx") 带替代。

例如,做 SDK 开发的时候,通常有很多对外 API ,正常情况下,不调用的时候,会有如下类似警告:

Kotlin中怎么使用Deprecated与Suppress注解

hello

对于有强迫症的来说这很难受,为了消除这种警告我们可以这样:

@Suppress("unused")
fun hello() {
 println("hello")
}

如果是Java代码则写成这样:

@SuppressWarnings("unused")
public void hello(){
 
}

又例如,有时候需要做一些类型转换时:

Kotlin中怎么使用Deprecated与Suppress注解

hello

此时为了消除这种警告,我们可以这样操作:

fun unChecked(){
 val list: List<Any> = emptyList()

 @Suppress("UNCHECKED_CAST")
 list as List<String>
}

如果在Java代码中则需要写成 @SuppressWarnings("unchecked")

Kotlin 中,Suppress 支持消除的警告有很多,可以通过源码查阅更多相关参数信息,例如:

Kotlin中怎么使用Deprecated与Suppress注解

看完上述内容,你们掌握Kotlin中怎么使用Deprecated与Suppress注解的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI