Kotlin相比Java 的优势主要有:
- 更加易表现:Kotlin最重要的优点之一。开发相同功能你可以少写很多的代码。
- 更加安全:Kotlin是空安全的,就是说在编译时期就处理了各种null的情况,避免了执行时异常。如果一个对象可以是null,则我们需要明确地指定 它,然后在使之前检查是否是null。可以节约很多调试nullPointException的时间并解决相应的bug。
- 函数式的:Kotlin是基于面向对象的语言。使用了很多函数式编程的概念,比如,使用lambda表达式来更方便地解决问题。其中一个很棒的特性就是Collections的处理方式。
- 可以扩展函数:意味着我们可以扩展类的更多的特性,甚至我们没有权限去访问这个类中的代码。
- 高度互操作性的:可以继续使用所Java写的代码和库,因为两 个语言之间的互操作性是完美的。甚至可以在项目中使用Kotlin和Java混合编程。
以下针对部分特点举例:
—特点一:易表现——-
比如我们用java写一个实类,通常我们要定义变量及对应的set及get方法等 ,如:
public class Student {
private String name;//姓名
private int age;//年龄
private String hobby;//爱好
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getHobby() {
return hobby;
}
public void setHobby(String hobby) {
this.hobby = hobby;
}
}
但是使用Kotlin,我们只要写这样几句代码就可以:
class Student(var name: String, var age: Int, var hobby: String)
//这样就会自动生成所有属性和对应访问器,以及一些有用的方法,比如:get,set及 toString()等
—-选点2:更安全——
Kotlin 类型系统中可以为空和不可为空的引用是不同的。
//普通的 String 类型的变量不能为空
var str: String ="abc"
str = null //编译错误
//允许为空,我们必须把它声明为可空的变量:
var b: String? = "abc"
b = null
//可以调用 a 的方法,而不用担心nullPoint异常了:
val l = a.length()
//如果你想使用 b 调用同样的方法就有可能报错了:
val l = b.length() //错误:b 不可为空
更多安全性可以参考http://kotlindoc.com/Other/Null-Safety.html
—特点三:函数式的——-
每当声明一个监听事件,可以只定义我们需要做些什么,而不是需要去创建一个新的Listener。这个的实现需要感谢lambda的使用:
//函数式支持(Lambdas)
view.setOnClickListener {
toast("Hello world!")
}
—-特点四:可以扩展函数——
可以给任何类添加函数。它比那些我们项目中典型的工具类更加具有可读性。 举个例子,我们可以给fragment增加一个显示toast的函数:
fun Fragment.toast(message: CharSequence, duration: Int = Toast.LENGTH_SHORT) {
Toast.makeText(getActivity(), message, duration).show()
}
//我们现在可以这么做:
fragment.toast("Hello world!")
当然还有更多的特点,我们可以参考Kotlin官网:http://kotlinlang.org/。