
1.2 Kotlin的特点
简洁、安全、与Java互操作、自带IDE支持,这是官方给出的Kotlin的四大特点。正是因为这四大特点,Kotlin深深吸引了程序员,快速获得程序员的青睐。
1.2.1 简洁
简洁,意味着代码书写工作量少,代码具有更好的可读性,具有更强的表达能力,更符合程序员的思维习惯。
官方给出了示例代码,用来展示Kotlin代码的简洁。
●仅用一行代码就可以创建POJO,具备了getters、setters、equals()、hashCode()、toString()和copy()功能,代码如下:

POJO是Plain Ordinary Java Object的缩写,指没有使用Entity Beans的普通Java对象,可以理解为简单的实体类。POJO 类的作用是方便程序员使用数据库中的数据表,程序员可以很方便地将POJO类当作对象来使用,当然也可以方便地调用其get和set方法。
●使用一行代码,就可以过滤List中大于0的项目,代码如下:

上面的代码中使用了Lambda表达式。
●使用单例模式,创建一个对象即可:

简洁,确实非常简洁。
1.2.2 安全
使用Kotlin可以摆脱让人讨厌的空指针异常(NullPointerExceptions)。在Kotlin中,用以下代码赋空值给变量,在编译时无法通过。

以下代码在编译时自动进行空值检查,也是无法通过的。

1.2.3 与Java互操作
可以使用运行在 JVM 上的任何现有库,Kotlin 对 Java 100%兼容,包括对 SAM 的支持(Simple API for XML)。这个特性不仅对Java程序员有吸引力,对没有Java经验的程序员也是一个好消息,毕竟Java语言发展了很多年,积累了强大的资源生态。因为100%兼容,意味着Kotlin可以站在巨人的肩膀上发展,起步就是高的,有大量可用的资源能够借用。

1.2.4 自带IDE支持
有好的IDE支持,会极大地提高代码书写的效率。如图1-1所示是IDE对Kotlin代码自动提醒的支持。

图1-1 代码提醒
代码提醒功能对于对Kotlin代码不熟悉的程序员来说非常有利,能够自动提醒,也非常有利于程序员提高代码书写效率,在提醒清单中选择需要的代码,按Enter键即可完成录入。
如图1-2所示是代码智能检查功能。

图1-2 代码智能检查