Android前沿Kotlin

本文探讨了Kotlin作为Java的替代者在Android开发中的普及,强调了其与Java的互操作性、简洁语法和在StackOverflow的受欢迎程度。通过静态方法、匿名内部类和RxJava的示例,展示了Kotlin如何简化代码,并在Adapter中的应用。Kotlin使得代码更加简洁,提高了开发效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       Kotlin 通常被视为下一个 Java,它是由谷歌和 JetBrains(Android Studio 开发者)赞助的。Java 从一开始就一直是 Android 应用的首选开发语言,但近年来 Kotlin 迅速普及,如今在 10,000 种 Google Play 应用中有近 60%使用了 Kotlin 。虽说在少数需要访问底层原生代码的情况下,仍会继续使用 C++;但在其他情况下,Kotlin 都可以代替 Java。

        Kotlin 的主要优势是与 Java 的完全互操作性,这意味着开发人员可以尽可能迁移旧代码,而不用完全重写整个应用程序。这两种语言兼容得很好,Android Studio 甚至可以自动从 Java 转换为 Kotlin。

         这种兼容性,加上更简洁的语法和数百项细小改进,使 Kotlin 在 StackOverflow 的 2019 年开发人员调查中成为第四大“最受欢迎”和第五大“想要”的编程语言,在所有移动编程语言中排名最高。

        迁移现有应用有一个好方法,就是在修改现有 Java 文件时将其转换为 Kotlin。虽然这意味着你要把经常编辑的文件转换过去,会增加代码审查的复杂度(比如会面临潜在的冲突),但由于转换后的区域能得到审查,因此可以确保任何问题都能被发现。

现在先简单介绍一下几个常用的场景:

1、静态方法

第一个让我懵逼的是静态方法。在Kotlin里边被叫做了:伴生对象。这里不扯“花里胡哨”的介绍。直接上代码:

 

在Java中这么一个简单工具类中的静态方法,Kotlin要怎么写?

 2、匿名内部类

setOnClickListener是我们比较常用的匿名内部类的使用场景:

 

那么到了Kotlin中又是什么样子了呢?

直接帮我们Lambda化了。如果我们不想Lambda化那应该是什么样子?

也没什么特别的,其实就是Kotlin的语法。因为Kotlin里边声明的变量要写在前面,其类型用:号隔开,写在后面。也就是现在这个样子。不过需要注意的,这里的object代表匿名对象类型。

这里有一个小细节,不知道大兄弟们有没有注意到。在Java中我们new匿名内部类的时候:new View.OnClickListener(){},是有()的。而在Kotlin中则:View.OnClickListener{}没有()。这里也是属于语法细节,加上()表示显示的调用这个类的构造方法。

如果这样的话,那就和new普通的类,没什么区别的(而不是匿名内部类)。借着匿名内部类,我们直接来看一下Kotlin在RxJava中的实战。

 3、Kotlin in RxJava

先看一个很简单的Java用法:

对于Kotlin来说,在Lambda的加持之下,写法变得异常的简洁(当然Java进行Lambda化也很简洁):

如果对Lambda不是很熟悉的大兄弟们,肯定有点懵。那么咱们换成普通的kotlin,,是不是感觉很熟悉?object又出现了,没错这里就是普通的匿名内部类而已。

 4、Kotlin in Adapter

上述的几块代码,我们一起感受了Kotlin在RxJava中的变形。说实话,如果抛出Lambda,真心谈不上什么大的变化。就是语法上的转变。聊过了我们日常开发比重比较大的RxJava,接下来我们再来看一看另一个重头戏Adapter。这里直接上Kotlin代码:

最开始看这个代码的时候,我是有点懵的,感觉不知所措。其实带入Kotlin的语法,非常的好理解。在最开始声明这个class的时候,我们直接在TestAdapter的主构造方法中声明了两个var的变量。这种写法就类似于Java中的:

这也就是为什么我们能在class里边随意调用data和context的原因。

注意var,如果我们在构造方法中声明时不加上var,就可以理解为这个变量是局部变量。只适用于构造方法中。

这中间override的代码应该没什么好说的,我们来看一下最后声明的class ViewHolder。正常来说我们在Java中的ViewHolder都是这个样子:

那为什么到了Kotlin之中,就变成了短短的一行

class ViewHolder(var textView: TextView) : RecyclerView.ViewHolder(textView)

了呢?其实也没有什么神奇的,就是正常语法而已。这小结开始的时候,我们提到了主构造方法,以及在匿名内部类这个小结中提到加上()表示显示的调用这个类的构造方法。因此Kotlin的这段代码非常的好理解:

就是把主构造方法中传递的textView,传给RecyclerView.ViewHolder()构造方法中。也就是和我们的Java代码一毛一样的,只是写法不同罢了。

 

以上是几个简单的例子,希望大家学习顺利,同时要感谢“码农登陆”和“InfoQ技术实验室”两位大神的技术文章支持。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值