Kotlin

Kotlin学习(一)

2019-09-30  本文已影响0人  苍天霸气诀

Kotlin的特性

Kotlin优势

上面说简洁简洁,到底简洁在哪里?这里先用一个例子开始,在Java开发过程中经常会写一些Bean类:

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;
    }
}

使用kotlin

class Artist {
    var id: Long = 0
    var name: String? = null
    var url: String? = null
    var mbid: String? = null
}

这个数据类,它会自动生成所有属性和它们的访问器,以及一些有用的方法

空安全

当我们使用Java开发的时候,我们的代码大多是防御性的。如果我们不想遇 到 NullPointerException ,我们就需要在使用它之前不停地去判断它是否为 null。Kotlin,如很多现代的语言,是空安全的,因为我们需要通过一个 安全调用操 作符 (写做 ? )来明确地指定一个对象是否能为空

//  这里不能通过编译.   
Artist  不能是null var notNullArtist:  Artist  =   null
//  Artist  可以是 null var
artist: Artist? =   null
//  无法编译,   artist可能是null,我们需要进行处理 
artist.print()
//  只要在artist   !=  null时才会打印
artist?.print()
//  智能转换.   如果我们在之前进行了空检查,则不需要使用安全调用操作符调用
if  (artist !=  null)
{   
artist.print()
    
}
//  只有在确保artist不是null的情况下才能这么调用,否则它会抛出异常
artist!!.print()
//  使用Elvis操作符来给定一个在是null的情况下的替代值 
val name    =   artist?.name    ?:  "empty"

函数式支持

每次我们去声明一个点击所触发的事件,可以只需要定义我们需要做些什么,而不 是不得不去实现一个内部类?我们确实可以这么做,这个(或者其它更多我们感兴 趣的事件)我们需要感谢lambda:

view.setOnClickListener {   toast("Hello    world!")    }
上一篇 下一篇

猜你喜欢

热点阅读