Code前端首页关于Code前端联系我们

Kotlin开始出现并逐渐流行起来,Android开发者应该知道

terry 2年前 (2023-09-23) 阅读数 74 #移动小程序

目前的Android开发只支持Java 6(语言本身从Java 7开始已经进行了一些改进),所以我们每天只能使用一种旧的语言来使用。显着降低了我们的生产力,还迫使我们编写大量样板文件和易受攻击的代码。然而,这样的代码很难阅读和维护。幸运的是,Android 程序运行在 Java 虚拟机上,因此从技术上讲,任何可以在 JVM 上运行的东西都可以用来开发 Android 应用程序。已经有很多语言可以生成可由 JVM 执行的字节码。其中一些语言开始出现并逐渐流行。Kotlin就是其中的佼佼者。

Kotlin开始崭露头角并逐步流行起来,android开发者要知晓

Kotlin是什么?

Kotlin是一种运行在JVM上的语言。它由 Jetbrains 创建,该公司开发了许多强大的工具,例如著名的 Java IDE IntelliJ IDEA。Kotlin是一种非常简单的语言,其主要目的之一是提供一种强大的语言,同时保持简单和精简的语法。主要特点如下:

轻量级:这对于Android来说非常重要。项目所需的库应尽可能小。 Android对方法的数量有严格的限制,而Kotlin只额外添加了大约6000个方法。

互操作性:Kotlin可以与Java语言无缝通信。这意味着我们可以在Kotlin代码中使用任何现有的Java库;因此,尽管该语言还很年轻,但已经有数百或数千个可用的库。另外,Kotlin代码也可以被Java代码使用,这意味着我们可以使用这两种语言来构建软件。您可以使用Future开发新功能,同时用Java实现代码库的其他部分。

强类型:我们很少需要在代码中指定类型,因为大多数情况下编译器可以推断变量或函数返回值的类型。这样您可以获得两个优势:简单性和安全性。

Null 安全性:Java 中最大的问题之一就是 null。如果没有对变量或参数进行空判断,程序中会抛出大量的NullPointerException,但这些在编码时很难察觉。Kotlin使用显式 null,这迫使我们在必要时执行 null 检查。

目前的Kotlin版本是1.0.0 Beta 3,不过正式版本很快就会发布。它可以用于制造业,许多公司已经成功使用了Kotlin。

为什么Kotlin那么适合Android?

基本上,这是因为Kotlin的所有功能都非常适合Android生态系统。Kotlin图书馆很小,我们在开发过程中不会产生任何额外费用。大小与support v4库相同,我们在很多项目中使用的库都比Kotlin还要大。此外,Android Studio(官方 Android IDE)是基于 IntelliJ 构建的。这意味着我们的IDE对该语言有很好的支持。我们可以使用值得信赖的 IDE 快速配置和开发项目。我们可以继续使用 Gradle 和 IDE 的各种循环和调试功能。这与使用 Java 开发应用程序没有什么不同。得益于互操作性,我们可以毫无问题地在Future Code中使用Android SDK。有些 SDK 甚至会变得更容易使用,因为互操作性非常智能。例如,它可以将getters和setters映射到Future属性,我们还可以以闭包的形式编写监听器。

Android开发中如何使用Kotlin?

过程非常简单,只需按照以下步骤操作即可:

从IDE插件中下载Kotlin插件

在模块中创建Kotlin类

使用“在项目中配置Kotlin...”

开始编码

Kotlin的一些特点

Kotlin有很多非常感人的特点。在这里不可能一一介绍它们,但让我们看一下其中一些最重要的。

空安全

如前所述,Kotlin是空安全的。如果类型可以为 null,我们需要一个 ?后面那种。这样,每次我们使用这种类型的变量时,我们都必须进行 null 检查。例如,以下代码无法编译:

var Artist: Artist? = 零? ()

第 2 行显示错误,因为未检查变量是否为零。我们可以这样做:

if (artist != null) { ? ()? }

这体现了Kotlin的另一个伟大特质:巧妙的类型转换。如果检查了变量的类型,则无需将其强制转换到控制范围中。这样我们现在就可以在if中使用artist作为Artist类型的变量了。这也适用于其他检查。还有一种更简单的方法来检查 null,使用 ?在调用对象的函数之前。您甚至可以通过 Elvis 运算符提供不同的方法?:

val name = Artist?.name ?: ""

数据类

如果您使用数据类或 POJO 类(仅存储某些状态),我们需要创建一个具有许多字段、getter 和 setter 的类,并且可能提供 toString 和 equals 方法:

public class Artist { private long id;私有字符串名称;私有字符串 URL;私有字符串 mbid; public long getId() { 返回 ID; } public void setId(long id) { this.id = id; } public String getName() { 返回名称; } public void setName(String name) { this.name = name; } public String getUrl() { 返回 URL; } public void setUrl(String URL) { this.url = url; } public String getMbid() { 返回 mbid; } public void setMbid(String mbid) { this.mbid = mbid; } @Override public String toString() { return "艺术家{" + "id=" + id + ", name='" + name + '\'' + ", url='" + url + '\'' + ", mbid='" + mbid + '\'' + '}'; } }

在Kotlin中,上面的代码可以写成如下:

data class Artist(? var id: Long, var name: String, var url: String, var mbid: String)

Kotlin使用属性而不是字段。基本上,属性是一个字段加上它的 getter 和 setter。

互操作性

Kotlin 提供了一些很棒的互操作性功能,这对于 Android 开发非常有用。其中之一是单个方法接口和 lambda 表达式之间的映射。这样,下面的点击监听器:

(object : { override fun onClick(v: View) { toast("Click")? } ?})

可以写成如下:

{ toast (“单击”)}

此外,getter 和 setter 会自动分配给属性。没有性能损失,因为字节码实际上只调用原始的 getter 和 setter。如以下代码所示:

supportActionBar.title = title textView.text = title ContactsList.adapter = ContactsAdapter()

Lambda表达式

Lambda表达式会很大程度上简化代码,但最重要的是使用 Lambda 表达式,我们可以做以前不可能或很难实现的事情。使用 lambda 表达式,我们可以以更实用的方式思考问题。 Lambda表达式实际上是一个指定的类型,这个类型定义了一个函数。例如,我们可以定义一个变量如下:

vallistener: (View) -> Boolean

这个变量可以声明一个函数,该函数接收一个视图并返回该函数。我们需要通过闭包来定义函数的行为:

vallistener = { view: View -> view is TextView }

上面的函数获取了一个View。如果视图是 TextView 的实例,则返回 true。由于编译器可以推断类型,因此我们不需要指定它。它也可以更清楚:

vallistener: (View) -> Boolean = { view -> view is TextView }

使用 Lambda 表达式,我们可以省略回调接口的使用。只需设置稍后要调用的函数即可:

fun asyncOperation(value: Int,callback: (Boolean) -> Unit) { ...callback(true)? } asyncOperation(5) { result -> println("result: $result") }

还有一种更简洁的方法。如果函数只接收一个参数,可以使用保留字 it:

asyncOperation(5) { println("result: $ it") }

Anko

Anko 是Kotlin学院开发的一个库团队简化 Android 开发。它的主要目的是提供一个DSL,允许使用Kotlin代码声明视图:

verticalLayout { val name = editText() button("Say Hello") { onClick { toast("Hello, $ {}!") } } }

它还提供了一些其他有用的功能。例如,导航到另一个 Activity:

startActivity("id" to res.id, "name" to res.name)

总结

如您所见,Kotlin 在很多方面简化了 Android。 。它将提高您的工作效率并以完全不同且更简单的方式解决一些常见问题。

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

热门