美文网首页Android技术知识程序员
kotlin 重构 mvp 项目(1)

kotlin 重构 mvp 项目(1)

作者: zidea | 来源:发表于2019-03-01 14:41 被阅读36次

最近将一个 java 写的 MVP 的 android 项目迁移为 kotlin ,一边迁移一边学习,人类的本性就是喜新厌旧,这一点在程序员身上体现的淋漓尽致,也是我们不断进步的动力源泉,不过作为架构师尽量还是学会限制自己好奇心,新技术、新语言要是跟风,会活活拖垮你的项目的,自己一点感受。

以下为随着项目迁移过程中遇到的 kotlin 与 java 不同。

  • 首先let()的定义是这样的,默认当前这个对象作为闭包的it参数,返回值是函数里面最后一行,或者指定return
fun <T, R> T.let(f: (T) -> R): R = f(this)
 override fun hideProgress() {
    progressDialog?.let { if(it.isShowing) it.cancel() }
}

这里 let 定义代码块中 it 就是对象 progressDialog

  • object 声明一个单例的语法很简单,我们使用object关键字替代class关键字就可以声明一个单例对象
object CommonUtil {

}
  • data 作为类修饰符,用于数据类,也就是我们数据模型。这是一个轻量级的类,用于数据模型使用。
data class Tutorial{
    @SerializedName("name")
    private var name:String? = null,
}
  • 在 kotlin 中的类型判断也变得简单
if(context is BaseActivity){
            
}
  • 在 kotlin 中的对象类型转换为 as 操作符
    val activity = context as BaseActivity?
  • var是一个可变变量,这是一个可以通过重新分配来更改为另一个值的变量(类似 javascript let)。
  • val是一个只读变量,这种声明变量的方式相当于java中的final变量。一个val创建的时候必须初始化,因为以后不能被改变。(类似 javascript const)
  private var parentActivity:BaseActivity? = null
  • 因为被abstract修饰的类默认具有open属性
open class BaseInteractor(): MVPInteractor{
    
}
  • lateinit 延迟加载
protected lateinit var preferenceHelper: PreferenceHelper
    protected lateinit var apiHelper: ApiHelper

相关文章

网友评论

    本文标题:kotlin 重构 mvp 项目(1)

    本文链接:https://www.haomeiwen.com/subject/cvyduqtx.html