引言
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
8companion 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
5interface Toaster {
fun toast(context: Context,string: String){
Toast.makeText(context,string,Toast.LENGTH_SHORT).show()
}
}实现回调与监听:
利用object
关键字通过:
实现这个接口,重新内部抽象函数1
2
3
4
5
6adapter.setOnItemClickListener(object : OnItemClickListener {
override fun onItemClick(itemView: View?, viewType: Int, position: Int) {
RxBus.get().post(PlayListNowEvent(mPlayList!!, position))
}
})
抽象类
- 实现抽象类函数:
利用object
关键字通过:
继承这个抽象类,重新内部抽象函数,要注意的是类名后面要加()
这是与接口的区别1
2
3
4
5view_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笔记/