1.@JvmName
修改方法名
直接看例子:
@JvmName("testCopy") fun test(name: String, age: Int) { }
直接反编译成java代码看下:
最终生成的方法名称就是testCopy而不是test
2.@get:JvmName
、@set:JvmName
修改属性名
@get: JvmName("getSource") @set: JvmName("setSource") var mData: String = ""
直接反编译成java代码看下:
对于val
属性则只能使用@get: JvmName
3.String判空使用isNullOrEmpty
,避免TextUtils.isEmpty()
我们分别对比下这两种写法:
可以看到,使用isNullOrEmpty
判空的String,在调用name.length
不会报错,使用TextUtils.isEmpty()
的则会报错,需要强制声明name!!
不为空`
为什么第一种不会报错呢,看下isNullOrEmpty
的源码:
@kotlin.internal.InlineOnly public inline fun CharSequence?.isNullOrEmpty(): Boolean { contract { returns(false) implies (this@isNullOrEmpty != null) } return this == null || this.length == 0 }
最核心的就是isNullOrEmpty
方法体中有个contract
,这个会帮助编译器告知String是否为空,以至于当调用name.length
时编译器能推断出String不是空的,就不需要程序强制声明name!!
非空
4.忽略大小写比较equals
一般的大小写比较如下:
val res = "aa".toLowerCase(Locale.ROOT) == "AA".toLowerCase(Locale.ROOT)
反编译成java代码看下:
可以看到,"aa".toLowerCase(Locale.ROOT)
赋值给一个局部变量var6
,"AA".toLowerCase(Locale.ROOT)
赋值给另一个局部变量var7
,然后再进行比较。
这种方式的比较会额外创建两个局部String变量,所以建议使用equals
替换,其中第二个参数可以指定忽略大小写比较
val res = "aa".equals("AA", ignoreCase = true)
反编译:
可以看到,实现非常的简单,不会创建额外的局部变量
5.运算符重载get
、set
get
class Pro { operator fun get(content: String): String { return content.repeat(10) } }
然后就可以这样使用:println(Pro()["blue"])
set
operator fun set(key: String, value: String) { }
set
运算符重载至少需要传入两个参数,使用如下:Pro()["key"] = "value"
这两个运算符使用场景非常多,比如针对于Android中SharedPreference读写封装,具体详情可以参考文章:三.委托与SharedPreference的结合
还有很多其他的运算符重载函数,比如plus
对应"+"、contains
对应"in"等等,都是日常开发中比较常用的,大家可以根据具体场景灵活运用
高效掌握 Kotlin 的方法
Kotlin 是门典型的易学难精的语言:语法简洁,极容易入门,但又拥有许多的新特性,不容易掌;即使掌握了 Kotlin 的语法,想要写出优雅的代码,也不容易,更别提 Kotlin 特性的应用场景、底层实现原理了。
在这里给大家分享由谷歌工程师整理的总结的《Kotlin从入门到精通》及《Kotlin高级强化实战》资料,帮助大家用最少的精力入门并掌握Kotlin编程语言。教程内容由浅入深,通俗易懂,实例丰富,既有基础知识,也有进阶技能,需要的伙伴们可以点击文末卡片免费领取!!
一、《Kotlin从入门到精通》
目录
该内容会使用Kotlin作为主要的语言来开发一个android应用。方式是通过开发一个应用来学习这门语言,而不是根据传统的结构来学习。
我会在感兴趣的点停下来通过与Java1.7对比的方式讲讲Kotlin的一些概念和特性。用这种方法你就能知道它们的不同之处,并且知道哪部分语言特性可以让你提高你的工作效率。
现在你知道使用Kotlin实现的小例子了,我确信你会希望尽可能快地把它用在你的实践当中去。不要担心,在第一章中会帮助你去搭建你的开发环境,这样你才能立即编写代码。
从Kotlin语法概念的理解项目的创建再到整个项目的完成,每篇都是是采用“一对一”的讲解方式, 侧重总结工作上的实践经验,并和你分享一些疑难问题的解决思路,让你在以后的工作中,能够有方法论的指导。
二、《Kotlin高级强化实战》
第一章 Kotlin入门教程
- Kotlin 概述
- Kotlin 与 Java 比较
- 巧用 Android Studio
- 认识 Kotlin 基本类型
- 走进 Kotlin 的数组
- 走进 Kotlin 的集合
- 集合问题
- 完整代码
- 基础语法
第二章 Kotlin 实战避坑指南
- 方法入参是常量,不可修改
- 不要 Companion 、INSTANCE ?
- Java 重载,在 Kotlin 中怎么巧妙过渡一下?
- Kotlin 中的判空姿势
- Kotlin 复写 Java 父类中的方法
- Kotlin “狠”起来,连TODO 都不放过!
- is、as` 中的坑
- Kotlin 中的 Property 的理解
- also 关键字
- takeIf 关键字
- takeIf 关键字
- 单例模式的写法
“工欲善其事,必先利其器”,学习以上知识点,可以让你在接下来的实战学习中,事半功倍。
第三章 项目实战《Kotlin Jetpack 实战》
- 从一个膜拜大神的 Demo 开始
- Kotlin 写 Gradle 脚本是一种什么体验?
- Kotlin 编程的三重境界
- Kotlin 高阶函数
- Kotlin 泛型
- Kotlin 扩展
- Kotlin 委托
- 协程“不为人知”的调试技巧
- 图解协程:suspend
由于文章篇幅有限,资料内容过多,只展示目录和部分截图,需要该资料完整版的小伙伴可点击文末卡片免费领取!!
Kotlin 通常被视为下一个 Java,在 StackOverflow 的 2019 年开发人员调查中,Kotlin 成为第四大“最受欢迎”和第五大“想要”的编程语言,在所有移动编程语言中排名最高。Android 开发由 Java 转 Kotlin 早已势不可挡。
希望这篇文章会对你学习和掌握 Kotlin 语言有所帮助,也希望各位读者能在Android开发的进阶之路上走得长远,共勉!!
到此这篇kotlin官方教程_kotlin语言的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/kotlinkf/1125.html