欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Kotlin基础学习之Deprecated与Suppress注解使用

程序员文章站 2022-04-29 10:31:55
前言 在 java 中通常对一些方法进行一些注解操作,但是很多注解在 java 代码上没有问题,如果切换到 kotlin 上时,如果继续使用这些注解就会存在一些问题,...

前言

在 java 中通常对一些方法进行一些注解操作,但是很多注解在 java 代码上没有问题,如果切换到 kotlin 上时,如果继续使用这些注解就会存在一些问题,本篇主要对比一些常用 java 注解和 kotlin 注解使用转换。

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注解使用

hello

总结

其实这两种注解使用起来都不难,主要是平常 java 代码写习惯了,切换到 kotlin 之后,很多 api 并不熟悉,需要在开发过程中慢慢了解与积累,俗话说好记性不如烂笔头就是这么个道理。

好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。