电话

18600577194

当前位置: 首页 > 资讯观点 > 软件开发

心玥软件公司对一些关于Kotlin开发语言的笔记

标签: Kotlin开发 2025-11-25 

"生活美好,一切都会好起来的,Kotlin 会在这里等着你" - 在 2017 年 Google I/O 大会上,Christina Lee 和 Jake Wharton 如是说。Kotlin 开发语言似乎在大会期间和之后成为了讨论最广泛的话题之一。移动技术市场非常动态,似乎引入由 Google 支持的新语言将改变我们在未来几年开发 Android 应用程序的方式。

目录:

1. Kotlin - 你需要知道的一切

2. Kotlin 的特点及其与 Java 的比较

3. 结论

kotlin 编程工具


Kotlin - 你需要知道的一切

尽管 Kotlin 只有 6 年的历史,但它已经引起了一些轰动。静态类型、面向对象,同时使用函数式编程的所有糖,它似乎是一个非常有前途的替代方案,用于基于 Java 7 的 Android 平台。随着 JetBrains 这个新开发语言的日益普及,在 2017 年 Google I/O 之后,我们可以确信 Kotlin 会持久存在,并且(正如有些人所说)甚至可能在 Android 开发中取代 Java。


Kotlin 的特性及其与 Java 的比较

让我们来看一些 Kotlin 功能的例子,并将其与 Java 及其他流行语言进行比较。首先,需要提到的是 Android Studio 3.0 已经内置了对 Kotlin 的支持,如果你想在 AS 2.0 或更高版本中使用 Kotlin,你只需要安装 Kotlin 插件。

很棒的是,你可以同时使用Java和Kotlin类(因为Kotlin代码编译成Java字节码),所以将你的项目从一个语言转换到另一个语言,或者简单地利用两种语言,都变得非常简单。插件还允许你自动将Java文件转换为Kotlin文件。

当我们创建一个新的类时,第一个明显的不同之处是我们可以看到。与 Scala 类似,通过创建一个带有公共属性的主要构造函数,我们可以节省很多代码——所有需要的 getter 和 setter 都为我们自动生成,而不需要一行代码。


Java中的英雄类:

public class Hero {

  private String name;

  private int level;

  private int maxHealthPoints;

  private int currentHealthPoints;

  private Weapon weapon;

  public Hero(String name, int level, int maxHealthPoints, int currentHealthPoints, Weapon weapon) {

    this.name = name;

    this.level = level;

    this.maxHealthPoints = maxHealthPoints;

    this.currentHealthPoints = currentHealthPoints;

    this.weapon = weapon;

  }

  public String getName() {

    return name;

  }

  public void setName(String name) {

    this.name = name;

  }

  public int getLevel() {

    return level;

  }

  public void setLevel(int level) {

    this.level = level;

  }

  public int getMaxHealthPoints() {

    return maxHealthPoints;

  }

  public void setMaxHealthPoints(int maxHealthPoints) {

    this.maxHealthPoints = maxHealthPoints;

  }

  public int getCurrentHealthPoints() {

    return currentHealthPoints;

  }

  public void setCurrentHealthPoints(int currentHealthPoints) {

    this.currentHealthPoints = currentHealthPoints;

  }

  public Weapon getWeapon() {

    return weapon;

  }

  public void setWeapon(Weapon weapon) {

    this.weapon = weapon;

  }

}

在 Kotlin 中对应的代码:

class HeroKotlin(var name: String, level: Int, var maxHealthPoints: Int,

var currentHealthPoints: Int, var weapon: Weapon)

我越深入研究Kotlin,就越发现它有很多节省时间的特性,并且看起来与Swift非常相似。如果你需要自定义获取器/设置器,有一个机制你可以从Swift中知道,即存储/计算属性(带/不带底层字段的属性)。而且,在Kotlin代码中,我们可以直接访问这些属性,而不需要调用get/set,底层会调用合适的的方法。

var level: Int = level

get() = field

set(value) {

// things to do

field = value

}

val healthPercent: Float

get() = (currentHealthPoints / maxHealthPoints) * 100F

val hero: HeroKotlin = HeroKotlin("Sarevok", 3, 40, 30, Weapon("Skull Crusher", "sword", 10))

hero.currentHealthPoints = 35

hero.level = 4

var health = hero.healthPercent

Kotlin 和 Swift 的下一个共同特点是空安全(Null Safety)。Kotlin 引入了单独的类型来表示可能包含空值的值,以使开发人员意识到与空指针引用相关的问题。在 Android Studio中,已经有一个工具可以帮助实现这一点——@Nullable和 @NotNull 注解——但这些只会产生警告,而在 Kotlin 中,如果你想将空值分配给非空变量,你将立即收到错误。基本上,在 Kotlin 中只有几种方式会得到空指针异常(NullPointerException),大多数情况是在显式解包空变量(例如 hero.weapon!!.attack())或在从 Java 代码调用 Kotlin 时。因此,许多小时通常会浪费在调试上,现在可以节省下来。


在上面展示的英雄类中,Java 会让我们调用

hero.setWeapon(null); // this assigment could lead to NullPointerException

但在 Kotlin

hero.weapon = null

将产生编译时错误。要使其可为空,我们应该声明var weapon: Weapon? 。处理可为空变量的绝佳方法是Elvis Operator:在?:  之后,如果变量为null,则放置替代值:

var heroLevel = hero?.level ?: 1

Kotlin包含一些Java在Android平台上不支持的更多功能(不使用外部库),如lambda表达式、扩展函数、运算符重载、类型推断、智能转换、字符串模板(字符串插值)或尾随闭包——所有这些都使其在视觉上比Java更接近Swift。描述所有这些内容需要一篇单独的长文章,如果你感兴趣。我的主要观点是给你一个简短的概述,介绍Kotlin提供了多少有趣的功能。

kotlin android


还有一些很棒的东西是为安卓开发专用的。其中之一是 Kotlin Android Extensions 插件。如果你曾经厌倦了使用 findViewById  来绑定你的每个视图 Activity ,并且感谢上帝/杰克·沃顿为 蝴蝶刀, 你会喜欢这个工具。通过添加

apply plugin: 'kotlin-android-extensions'

到你的build.gradle  文件,你可以像访问属性一样访问所有视图,而无需自己进行绑定。没有更多的样板代码!

科特林编程语言


结论

每天都有越来越多的Kotlin爱好者。程序员们欣赏它的功能、简洁和出色的支持。此外,由于Kotlin和Swift在语法上非常相似,程序员和支持团队更容易合作,并且通常可以为两个平台开发应用程序,因为大量代码可以被复用。

目前,Java是(并且至少在接下来的几年内可能会继续是)Android开发中最受欢迎的语言,但Kotlin获得如此广泛的普及,以至于几年后大部分的Android应用程序都将用这种简洁的语言编写,并不是不可能的事情。就目前而言,北京心玥软件公司使用Kotlin的几次项目进行得非常顺利,我们看到了一段更长时间使用的可能。