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

所属分类: 软件编程 / Android 阅读数: 74
收藏 0 赞 0 分享

前言

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

Deprecated

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

@Deprecated
public void test(){

}

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

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:指定可用于替换已弃用的函数,属性或类的代码片段。不明白?一图看懂:

replace

SuppressWarnings 与 Suppress

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

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

hello

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

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

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

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

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

hello

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

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

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

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

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

hello

总结

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

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

更多精彩内容其他人还在看

Android框架学习之Volley和Glide详解

这篇文章主要给大家介绍了关于Android框架学习之Volley和Glide的相关资料,文中通过示例代码介绍的非常详细,对各位Android开发者们具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

Android中Fragment的基本用法示例总结

Fragment是activity的界面中的一部分或一种行为,下面这篇文章主要给大家介绍了关于Android中Fragment的基本用法的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
收藏 0 赞 0 分享

Android.mk引入第三方jar包和so库文件的方法

这篇文章主要介绍了Android.mk引入第三方jar包和so库文件的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

Android仿微信录制小视频

这篇文章主要为大家详细介绍了Android仿微信录制小视频,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

android实现一键锁屏和一键卸载的方法实例

这篇文章主要给大家介绍了关于android如何实现一键锁屏和一键卸载的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
收藏 0 赞 0 分享

Android手势密码--设置和校验功能的实现代码

这篇文章主要介绍了Android手势密码--设置和校验功能的实现代码,非常不错,具有一定的参考校验价值,需要的朋友可以参考下
收藏 0 赞 0 分享

Kotlin学习笔记之const val与val

这篇文章主要给大家介绍了关于Kotlin学习笔记之const val与val的相关资料,并给大家介绍了const val和val区别以及Kotlin中var和val的区别,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

Android实现调用系统分享功能示例的总结

这篇文章主要介绍了通过Android调用系统分享文本信息、单张图片、多个文件和指定分享到微信、QQ,同时分享图片和文字的功能示例,小编觉得挺不错,一起跟随小编过来看看吧
收藏 0 赞 0 分享

Android自定义view实现输入控件

这篇文章主要为大家详细介绍了Android自定义view实现输入控件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Android使用Intent.ACTION_SEND分享图片和文字内容的示例代码

这篇文章主要介绍了Android使用Intent.ACTION_SEND分享图片和文字内容的示例代码的实例代码,具有很好的参考价值,希望对大家有所帮助,一起跟随小编过来看看吧
收藏 0 赞 0 分享
查看更多