场景: 在kotlin代码实现 Java方式的接口回调,每次都得重写一个object,如
ConfirmDialog.newInstance()
.setTitle("disconnect")
.setMessage("Confirm disconnection?")
.setOnConfirmClickListener(object : DialogInterface.OnClickListener {
override fun onClick(dialog: BaseDialog) {
mSolosDeviceManager.disconnect(matchAddress)
HomeHelper.instance.startHomActivity(this@FishGlassSettingActivity)
dialog.dismiss()
}
})
.show(supportFragmentManager)
但是java 的setOnClickListener方法因为lambda语法糖,又可以节省object,然后想着网上搜kotlin定义接口回调的方式是这样的
private lateinit var mListener: () -> Unit
fun setOnClickListener(listener: () -> Unit) {
this.mListener = listener
}
虽然能实现,但听课后,有个纠结的点,课上老师说高阶函数内部会new一个Function,如果要优化,可以用inline修饰,如果如上定义接口回到,用inline修饰,提示inline无法修饰public函数
想请问下老师kotlin定义接口回调网上这种写法有没问题,有没更优解,然后不用inline修饰性能影响大吗?