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

作者:XuYanjun 时间:2023-01-03 10:50:54 

前言

在 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 并不熟悉,需要在开发过程中慢慢了解与积累,俗话说好记性不如烂笔头就是这么个道理。

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

来源:https://www.jianshu.com/p/d3fb131d57c7

标签:kotlin,deprecated,suppress
0
投稿

猜你喜欢

  • Spring源码解析之事务传播特性

    2021-08-14 16:49:39
  • sprng和struts有什么区别?

    2022-03-02 02:13:35
  • C#开启线程的四种示例

    2022-06-01 13:04:37
  • Android项目实战手把手教你画圆形水波纹loadingview

    2023-03-15 10:13:47
  • Android Activity之间的数据传递方法总结

    2023-05-26 03:43:21
  • 基于list stream: reduce的使用实例

    2021-07-21 06:54:52
  • Java并发工具类LongAdder原理实例解析

    2023-11-25 15:50:20
  • java微信开发API第一步 服务器接入

    2023-08-24 11:18:26
  • SpringMVC @GetMapping注解路径冲突问题解决

    2022-12-18 01:43:17
  • 基于Unity3D实现仿真时钟详解

    2021-05-24 15:11:34
  • Java8深入学习系列(一)lambda表达式介绍

    2021-08-20 11:23:19
  • 解析spring boot与ireport 整合问题

    2021-12-15 17:49:25
  • JAVA注解代码详解一篇就够了

    2022-12-27 14:45:26
  • Android实现购物车添加商品特效

    2021-06-25 22:59:45
  • Android Dialog对话框用法实例详解

    2022-11-04 02:38:47
  • Java面试synchronized偏向锁后hashcode存址

    2023-08-09 09:15:06
  • 详解Android应用开发中Intent的作用及使用方法

    2021-11-20 04:45:03
  • 使用JAVA实现http通信详解

    2023-11-12 12:21:12
  • Android语音声波控件 Android条形波控件

    2023-10-29 02:03:05
  • c#中设置快捷键

    2021-05-31 20:14:29
  • asp之家 软件编程 m.aspxhome.com