Kotlin项目练习记录

来源:互联网 发布:聚焦网络爬虫 软件 编辑:程序博客网 时间:2024/05/21 08:39

Kotlin项目练习记录

替换findviewbyid

app/app.gradle 下导入apply plugin: ‘kotlin-android-extensions’插件,才能直接使用xml里面的定义的id(替代掉findviewbyid)

跳转activity

val intent = Intent()intent.setClass(this,MainActivity::class.java)startActivity(intent)

或者封装一下:

inline fun <reified T : Activity> Activity.newIntent() {    val intent = Intent(this, T::class.java)    startActivity(intent)}

null的判断变得简单,从此不用担心空指针了

//可以是nullvar mPresenter: String? =null//如果发现是null,则不要去调用方法mPresenter?.length()//这就可能报错npe了mPresenter!!.length()

网络请求单例模式

单例在Kotlin有更简单的方法实现,只要在 package 级别创建一个 object 即可

//重要修饰符 companion object{        @Volatile        var instance: RetrofitClient? = null        fun getInstance(context: Context,baseUrl: String) : RetrofitClient {            if (instance == null) {                synchronized(RetrofitClient::class) {                    if (instance == null) {                        instance = RetrofitClient(context,baseUrl)                    }                }            }            return instance!!        }    }

修饰符区别 object class, data class , class

data class 比较好理解 就是对应这java中的实体类,该类不包含方法,并且默认已经帮你生成了get, set ,toString等常用方法

class 就是普通的类 这里面如果使用静态成员 则需要用到companion object

object 解决kotlin中没有静态成员问题,用object修饰类的时候,里面的成员默认都是静态成员

//静态常量companion object {        var MSG_IMAGE_LOADED = 101    }

lambda表达式

一开始觉得lambda很高级完全看不懂,其实很简单的就是把接口名、方法名和参数类型省掉不写再加个->罢了,明白这点了很好理解。

// 无参数无返回值Thread(Runnable {    sleep(1000)}).start()// 单参数不带返回值view.setOnClickListener { v ->    Log.e("tag", "${v.tag}")}// 多参数带返回值view.setOnKeyListener(View.OnKeyListener { v, keyCode, event ->    Log.e("tag", "keyCode$keyCode, ${event.keyCode}")    if (event.keyCode == KeyEvent.KEYCODE_BACK)        return@OnKeyListener true    false})作者:小耳朵图图是我链接:http://www.jianshu.com/p/1ea733ea197d來源:简书著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

实现了Java中try-with-resource语句的功能

原创粉丝点击