kotlin-for-android简介(1)

1836次阅读  |  发布于5年以前

kotlin-for-android简介(1)

Kotlin是众多基于JVM的语言之一,它一开始是作为android 开发中java语言的可能的代替者出现的。java是世界上使用最多的语言之一,而伴随着其他语言的发展使得程序员编程越来越容易,但是java并没有尽快地向预期目标发展。

Kotlin简介

Kotlin是JetBrains创造的基于JVM的语言,JetBrains是IntelliJ的缔造团队。
Kotlin是一个拥有很多函数编程特点的面向对象的编程语言。

为什么要用Kotlin

我首先声明我并没有使用Kotlin很长时间,我几乎是在学习的同时写了这些文章的。我并没有尝试任何其它的替 代语言,例如Go和Scala,所以如果你是真的考虑换一种开发语言的话,我建议你去搜索一下其他人对这些 语言的评价。一个使用Scala开发android的例子可以在[47deg Github site](http:/
47deg.github.io/translate-bubble-android/)找到。

以下是我选择学习Kotlin的原因:

在开始任何争论之前我建议你看一下Jake Wharton写的一个有趣的文档the use of Kotlin for Android development

Kotlin的优点

1. 可读性更高,更简洁

使用Kotlin,可以更容易的避免创建模版型代码,因为大多数经典的情景都默认包含在Kotlin中。
例如,在java中,我们想要创建一个典型的data class时需要这样做:

    public class Artist {
    private long id;
    private String name;
    private String url;
    private String mbid;

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    public String getMbid() {
        return mbid;
    }

    public void setMbid(String mbid) {
        this.mbid = mbid;
    }

    @Override public String toString() {
        return "Artist{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", url='" + url + '\'' +
                ", mbid='" + mbid + '\'' +
                '}';
    }
}

那么在Kotlin需要多少代码呢?仅仅是下面这个简单的数据类:


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

2. 空指针安全

当我们用java开发时,我们的大多数代码是要进行类型检查的,如果我们不想出现unexpected NullPointerException的话,我们就要在运行代码之前持续的检查是否有对象为null。Kotlin,和其它语 言一样,是空指针安全的,因为我们可以通过安全的调用操作来准确的声明一个object可以为null。

我们可以这样做:


    //This won´t compile. Artist can´t be null
    var notNullArtist: Artist = null

    //Artist can be null
    var artist: Artist? = null

    // Won´t compile, artist could be null and we need to deal with that
    artist.print()

    // Will print only if artist != null
    artist?.print()

    // Smart cast. We don´t need to use safe call operator if we previously checked     nullity
    if (artist != null) {
        artist.print()
    }

    // Only use it when we are sure it´s not null. Will throw an exception otherwise.
    artist!!.print()

    // Use Elvis operator to give an alternative in case the object is null
    val name = artist?.name ?: "empty"

3. 扩展方法

我们可以给任何类添加新方法。这比我们在project中使用的工具类可读性更高。例如:我们可以给Fragment添加一个新方法来显示Toast。

fun Fragment.toast(message: CharSequence, duration: Int = Toast.LENGTH_SHORT) {
    Toast.makeText(getActivity(), message, duration).show()
}

我们可以这样使用:

    fragment.toast("Hello world!")

4. 支持函数式编程

如果我们可以不用在我们需要的时候每一次都创建一个listener,就像创建一个click listener那样的操作, 而是仅仅定义我们想要做什么?这种想法的确可以实现,它的实现得益于lambdad的使用:

    view.setOnClickListener({ toast("Hello world!") })

Kotlin目前存在的限制

Kotlin 依旧在发展,虽然它相对稳定,并且final release版本就很快发布,但是Kotlin在进行android相关开发的时候还是有些限制的。

结论

对于android apps 开发,Kotlin是一个非常有趣的java替代者。下一篇文章将会描述如何用Kotlin新建一 个project,和如何更好的适用Kotlin来使得android开发更加简单。敬请关注!

Copyright© 2013-2020

All Rights Reserved 京ICP备2023019179号-8