盒子
盒子
文章目录
  1. 引言
  2. 基本语法
  3. 一些区别
  4. 要点
    1. 属性
    2. 方法
    3. 接口
    4. 抽象类
    5. 其他点
  5. 小结

Kotlin笔记

引言

2017年的谷歌 I/O大会上,Android团队宣布Kotlin成为了Android平台的官方支持的编程语言。跟随时代的脚步,也马上的开始学习这门语言,过程中,记录一些要点,心得

基本语法

直接看文档更合适:https://github.com/huanglizhuo/kotlin-in-chinese

一些区别

kotlin与java的一些直接的对比:https://github.com/MindorksOpenSource/from-java-to-kotlin

要点

下面是个人学习kotlin开发的时候的一些心得与要点

属性

  • kotlin的实体类默认实现了get set方法,直接通过.号取值赋值

  • kotlin定义变量的时候有 var val两种,var是普通变量,val是只读变量,即java中的final

  • kotlin类中的上下文,eg:MainActivity.this,用kotlin表示:this@MainActivity

  • ?符号是个神器,参见上面给出的文档,但是有些时候要注意下,比如我们定义一个变量

    private var mContext: Context? = null

    那么下次在使用的时候,需要你确认它不为null,需要这样写mContext!!,写的地方多就会嫌麻烦,那么你可以这样定义,避免这个问题

    lateinit internal var mContext: Context

方法

  • 静态方法定义:

    利用伴随对象
    1
    2
    3
    4
    5
    6
    7
    8
    companion object {
    fun callIntent(context: Context, folder: Folder): Intent {
    val intent = Intent(context, PlayListDetailsActivity::class.java)
    intent.putExtra(EXTRA_FOLDER, folder)
    return intent
    }
    }

  • class调用:

    java:PlayListDetailsActivity.class
    kotlin:PlayListDetailsActivity::class.java

接口

  • kotlin的接口就流弊了,接口中可以有函数体,这点java做不到,利用这个特性,我们可以做很多解耦的工作,比如只要实现一个接口,我们就能使用它内部定义好的功能函数,非常nice

    1
    2
    3
    4
    5
    interface Toaster {
    fun toast(context: Context,string: String){
    Toast.makeText(context,string,Toast.LENGTH_SHORT).show()
    }
    }
  • 实现回调与监听:

    利用object关键字通过:实现这个接口,重新内部抽象函数

    1
    2
    3
    4
    5
    6
    adapter.setOnItemClickListener(object : OnItemClickListener {
    override fun onItemClick(itemView: View?, viewType: Int, position: Int) {
    RxBus.get().post(PlayListNowEvent(mPlayList!!, position))
    }
    })

抽象类

  • 实现抽象类函数:

    利用object关键字通过:继承这个抽象类,重新内部抽象函数,要注意的是类名后面要加()这是与接口的区别
    1
    2
    3
    4
    5
    view_pager.addOnPageChangeListener(object : ViewPager.SimpleOnPageChangeListener() {
    override fun onPageSelected(position: Int) {
    radioButtons[position].isChecked = true
    }
    })

其他点

  • 懒加载,lazy内部代码执行时间为这个变量第一次使用的时候
    1
    private val mTitles by lazy { resources.getStringArray(R.array.mp_main_titles) }

小结

不间断补充,Kotlin这门语言用着目前感受不错,以后再慢慢深入吧

转载请指明出处RobinBlog:http://robinx.net/2017/06/26/Kotlin笔记/