Kotlin VS Java笔记

记录Kotlin 遇到的与Java 不一样的地方

1. Kotlin 所有类和方法默认都是 "final" 

但是Kotlin 是没有final 关键字的(Java 中的"final" 关键字)

如果需要重写 类 或者 方法, 需要加上关键字 "open" 修饰 "abstract" 修饰的抽象类或者方法则不用

同时可以加上protected 保护,例如 :

protected open fun show() {
    //...
}

常量则使用 const val 修饰

2. 子类初始化父类定义的变量,可以在init{} 块中 初始化

abstract class A{
   var tmpA: String ?=null
}

class B: A{
    constructor()
     
    init{
        tmpA="Hello world"
    }
}

但是在 子类的构造函数中,是无法使用父类定义的变量的。

一般的,在接口定义方法, 抽象基类定义变量,子类按需覆写方法和变量。

3.  回调方式

java 一般需要在被调用方(例如A)定义一个接口,并且提供设置接口实例的方法, 然后在调用方(例如B) 实现这个接口, 在B调用A 的时候,需要先设置接口实例(也可通过lamada 表达设置)

而kotlin 可以通过把 方法作为 参数 传递, 非常方便 ,  注意 {} 表示方法体

例如   fun test1(accept: () -> Unit,   reject: () -> Unit) {

              accept()

              .....

              reject()

         }

其中 accept /reject 表示方法名, : 表示后面的是参数列表 和 返回值, ()即为参数列表,  Unit 表示返回值

fun test2 () {

      test1( { test3()}},  {test4()})

}

fun test3(){ ....}

fun test4() {.....}

注: 方法引用 与 监听器绑定

参考 https://developer.android.com/topic/libraries/data-binding/expressions#java  databinding 中的事件处理

  • 方法引用:在表达式中,您可以引用符合监听器方法签名的方法。当表达式求值结果为方法引用时,数据绑定会将方法引用和所有者对象封装到监听器中,并在目标视图上设置该监听器。如果表达式的求值结果为 null,则数据绑定不会创建监听器,而是设置 null 监听器。
  • 监听器绑定:这些是在事件发生时进行求值的 lambda 表达式。数据绑定始终会创建一个要在视图上设置的监听器。事件被分派后,监听器会对 lambda 表达式进行求值

(1) 方法引用:所有参数必须一致,以要调用的方法名称作为值 

例如: handlers::onClickFriend

(2) 监听器绑定: 可以有参数,也可以没有参数

监听器绑定是在事件发生时运行的绑定表达式。

例如:

    class Presenter {
        fun onCompletedChanged(task: Task, completed: Boolean){}
    }

<CheckBox android:layout_width="wrap_content" android:layout_height="wrap_content"
          android:onCheckedChanged="@{(cb, isChecked) -> presenter.completeChanged(task, isChecked)}" />

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值