Kotlin 开始篇之 Kotlin 的优点

文章目录

  • Kotlin 开始篇之 Kotlin 的优点
    • 前言
    • 正文
      • Kotlin 的优点
        • 1. 欢迎来到 kotlin 的糖果乐园
        • 2. 人性化语法糖之一,使用 val\var 省略一次性类型
        • 3. 人性化语法糖之二,扩展方法
        • 4. 人性化语法糖之三,高阶函数(also\apply\let)
        • 5. 人性化语法糖之四,可迭代接口的扩展函数(filter\map\forEach)
        • 6. 空安全。你有过被java 的 NullPointer 错误支配的恐惧么?
        • 7. data 关键字。助我们大量重复的POJO
        • 8. 函数式。代码更瘦 smaller and smaller
        • 9. Kotlin Android Extention. 告别 findViewById
        • 10. kotlin 优点,总结
    • 链接

前言

回答为什么要学 kotlin?

正文

Kotlin 的优点

1. 欢迎来到 kotlin 的糖果乐园

kotlin 内部使用了很多语法糖来帮助我们简化操作,少写代码

2. 人性化语法糖之一,使用 val\var 省略一次性类型

//[1] 声明局部常量,在 java 和 kotlin 上的实现, 省了很多代码,可以少打很多单词
//java
final int a = 1;
//kotlin
val a = 1

3. 人性化语法糖之二,扩展方法

//使用:
val user: User? = null
toast(user?.name)//声明扩展方法
fun Context.toast(message: CharSequence, duration: Int = Toast.LENGTH_SHORT){Toast.makeText(this, message, duration).show()
}

4. 人性化语法糖之三,高阶函数(also\apply\let)

5. 人性化语法糖之四,可迭代接口的扩展函数(filter\map\forEach)

1. 让你成为 it 爱好者协会,it 就是 iterator 的意思

6. 空安全。你有过被java 的 NullPointer 错误支配的恐惧么?

//[1] java 的判空,首先你得有这个意识,其次,要写很多代码,而且都是模板代码的 copy。
//[2] kotlin 有编译器检查,不用你担心一个不小心。代码就一个 ? 不能再少了
//java
if(user != null ){user.getName();
}
//kotlin
user?.getName()//还有方法前面的条件判断,也有简便写法
//java
if(user == null ){return;
}
//kotlin
user?: return

7. data 关键字。助我们大量重复的POJO

//Kotlin 的 POJO.(可以早点下班了)
data class User(var name: String, var id: String)

8. 函数式。代码更瘦 smaller and smaller

// 继续省代码
//[1] java 的点击事件
view.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v) {Toast.makeText(v.getContext(), "Click", Toast.LENGTH_SHORT).show();}
})//[2] kotlin 的对应写法
view.setOnClickListener(object : OnClickListener {override fun onClick(v: View) {toast("Click")}
}//[3] kotlin 使用 lambdas 表达式继续进化,一行
view.setOnClickListener({view -> toast("Click")}}//[4] kotlin 还可以进化,view 没用,扔掉
view.setOnClickListener{toast("Click")}

9. Kotlin Android Extention. 告别 findViewById

// [1] java 的 findById 语法,还得费尽心思视图的变量名
TextView textView = findViewById(R.id.textview);
textView.setText("kotlin");// [2] ButterKnife 配合插件,方便点不用写,还是会有一大托一大坨模板代码
@Bind(R.id.textview)
TextView mTextView;// [3] kotlin 新奇的思路,直接使用id 来绑定
import kotlinx.android.synthetic.main.activity_main.*//直接使用id 来操作view
fun initView(){textView.setText("kotlin")
}// [4] 为何这么神奇,这么方便呢。其实还是语法糖,我们可以尝试看对应的java 代码,看看原理
//(Tools-> Kotlin -> Show kotlin bytecode -> compile)
// 语法糖代码如下((TextView)this._$_findCachedViewById(id.textView)).setText("kotlin";//再去看 _$_findCachedViewById 方法,还是调用 findViewById,存储 HashMap 里做缓存,嗯,还是熟悉的配方
public View _$_findCachedViewById(int var1) {if (this._$_findViewCache == null) {this._$_findViewCache = new HashMap();}View var2 = (View)this._$_findViewCache.get(var1);if (var2 == null) {View var10000 = this.getView();if (var10000 == null) {return null;}var2 = var10000.findViewById(var1);this._$_findViewCache.put(var1, var2);}return var2;
}//有缓存,就要记得清楚,onDestroyView 就做了清楚操作
public void onDestroyView() {super.onDestroyView();this._$_clearFindViewByIdCache();
}public void _$_clearFindViewByIdCache() {if (this._$_findViewCache != null) {this._$_findViewCache.clear();}
}

10. kotlin 优点,总结

- 更简洁。代码量更少,诸多语法糖
- 更安全。?操作符,需强行判空
- 易扩展。给类写扩展方法
- 函数式。also\apply\filter 等高阶函数
- Kotlin Android Extensions。再也不要写 findViewById ,再也不需要 ButterKnife
- 告别分号。我就笑笑

链接

  1. https://www.kotlincn.net/docs/reference/basic-syntax.html
  2. https://www.zhihu.com/question/25289041

Kotlin 开始篇之 Kotlin 的优点相关推荐

  1. Kotlin 旅途篇(一)

    简述kotlin  kotlin是由JeBrains开发,一个基于JVM新的编程语言 Kotlin可以编译成java字节码,也可以编译成JavaScript,方便在设备上运行. 谷歌I/O 2017宣 ...

  2. Kotlin——初级篇(六):空类型、空安全、非空断言、类型转换等特性总结

    在我们熟知的Java中,定义一个变量可以默认不赋值,因为Java的系统会给我们默认赋一个默认值,并且Java可定义一个赋值为null的变量,这样在使用这个变量的时候都会去显示判断该变量是否为null. ...

  3. Kotlin——初级篇(二):变量、常量、注释

    在Kotlin中的变量.常量以及注释多多少少和Java语言是有着不同之处的.不管是变量.常量的定义方式,还是注释的使用.下面详细的介绍Kotlin中的变量.常量.注释的使用.以及和Java的对比. 如 ...

  4. Kotlin——中级篇(二): 属性与字段详解

    在前面的章节中,详细的为大家讲解到了Kotlin中对类的类的定义.使用.初始化.初始化.类继承等内容,但是在一个类中,几乎上是不可能不出现属性与字段(field)的,这一篇文章就为大家奉上Kotlin ...

  5. kotlin开发Android入门篇八Kotlin开发Android的基本使用

    基础篇:Kotlin开发Android的基本使用 使用AndroidStudio3.0及以上开发Kotlin在新建项目中勾选这个选项则会默认开发语言为Koltin,然后再gradle(Project的 ...

  6. Kotlin第4篇 【Kotlin】进阶视频课程-关东升-专题视频课程

    Kotlin第4篇 [Kotlin]进阶视频课程-376人已学习 课程介绍         本视频是智捷课堂推出的一套"Kotlin语言学习立体教程"的视频第四部分,主要内容包括: ...

  7. Kotlin从小白到大牛第1篇 【Kotlin】基础视频课程-关东升-专题视频课程

    Kotlin从小白到大牛第1篇 [Kotlin]基础视频课程-7239人已学习 课程介绍         本视频是智捷课堂推出的一套"Kotlin语言学习立体教程"的视频第一部分, ...

  8. Kotlin——初级篇(一):最详细的环境搭建

    众所周知,Kotlin出来已经良久了.Kotlin有着众多优势,不管是用于Android开发中,还是Java开发,都能缩减很大的代码量,大大提高了工作效率.而小生本人也是才从忙碌的个工作中抽身出来,有 ...

  9. 学习Kotlin(一)为什么使用Kotlin

    推荐阅读: 学习Kotlin(一)为什么使用Kotlin 学习Kotlin(二)基本语法 学习Kotlin(三)类和接口 学习Kotlin(四)对象与泛型 学习Kotlin(五)函数与Lambda表达 ...

最新文章

  1. linux 进程做成服务,Linux自定义后台服务进程
  2. python 简易 http server
  3. Unix环境高级编程学习笔记(一)
  4. Redhat 6.4_联网 yum 配置
  5. CC++ Calling Convention
  6. 大数据-03-Spark入门
  7. Spark : ContextCleaner清理器
  8. php地址选择插件,微信小程序中关于三级联动地址选择器的实例分享
  9. Matlab 之GUIDE界面设计:不同函数之间使用相同变量
  10. C++语言虚函数表实现多态原理
  11. [bzoj4826][Hnoi2017]影魔
  12. MATLAB求图像的均值、中值、众数、方差、协方差、相关系数
  13. 阿里云短信验证码注册
  14. 富士通Fujitsu DPK1786T 打印机驱动
  15. AntennaHome Launch 5G Combo Internal PCB Antenna /5G 全频 PCB天线
  16. Insecure CAPTCHA(不安全的验证码)
  17. 给定经纬度定位某个城市
  18. GAPIT 3.0:全基因组关联分析与预测软件最新版发布
  19. 8 大主流自媒体平台优缺点分析以及运营建议
  20. 百度ai开放平台使用方法(附带例子详细步骤)

热门文章

  1. 资深工程师带你了解IC工程师级别与薪资
  2. Android锁屏勒索病毒分析(1)BWM在线
  3. Python学习之路 day1_Python基础1
  4. mybatisplus乐观锁最新
  5. 西南大学计算机考研,西南大学907考研,西南大学808考研
  6. iMeta | 中科院南京土壤所吴永红组揭示周丛生物非生物成分的地理印记和生态功能...
  7. 合并文件夹下多个PDF,PDF转图片,图片转PDF,JPG转pdf,pdf转JPG
  8. InputStream的read()方法
  9. 学习笔记,发QQ邮件
  10. Java | javac中常见参数