kotlin概览

一,代码更安全
(1)java代码。
示例:

String str = null;
str.getBytes();
原因:忘记赋值,或赋了空值;使用的时候忘了做非空判断。
后果:报错崩溃。
解决办法:写好非空判断。
    if(str != null){str.getBytes()}

(2)kotlin代码

var str:String? = null
str.get(0) // 编译无法通过,AS也会提示代码有问题
// 解决办法1
if(str != null){
  str.get(0)
}
// 解决办法2
str?.get(0)

变量默认不能为空(必须初始化),如果必须为空需用?声明为可空类型,且在使用时强制非空判断。

综上kotlin更易避免空指针、同时写法更简洁。
PS: kotlin的toString()方法默认做了非空判断。

二,代码更简洁
(1)java代码

public class User {
  private String name
  private int age;
  // 一大堆getter,setter
}

(2)kotlin代码

data class User(var name:String, var age:Int)

有没有很简洁,一行代码搞定。

三,支持lambda表达式
java8也开始支持lambda表达式,所以这一点并不存在优势。

四,默认参数
(1)java代码

public void createInstance(String name, int age, boolean isVip){
  User user = new User();
  user.SetName(name);
  user.setAge(age);
  user.setIsVip(isVip);
}

public void createInstance(String name, int age){
  User user = new User();
  user.SetName(name);
  user.setAge(age);
  user.setIsVip(false);
}

(2)kotlin代码

fun createInstance(name:String, age:Int, isVip:Boolean = fase){
  //初始化对象代码
}

kotlin可以减少重载方法的数量。

五,跟findViewById说再见
(1)java代码

TextView tv = (TextView)findViewById(R.id.tv);
tv.setText();

(2)kotlin代码

import kotlinx.android.synthetic.main.activity_main.*
tv.text = ""

六,不用通过继承的方式给类增加新函数

fun ViewGroup.inflate(layoutRes: Int): View {
    return LayoutInflater.from(context).inflate(layoutRes, this, false)
}

以上代码段就是给ViewGroup增加了一个inflate函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值