android studio建议用lambda替换匿名内部类。
titleTextView.setOnClickListener(object : View.OnClickListener {
override fun onClick(v: View?) {
Log.d("MY_TAG", "textView clicked in anonymous inner class")
}
})
反编译Java代码:
var10000 = this.titleTextView;
if (this.titleTextView == null) {
Intrinsics.throwUninitializedPropertyAccessException("titleTextView");
}
var10000.setOnClickListener((OnClickListener)(new OnClickListener() {
public void onClick(@Nullable View v) {
Log.d("MY_TAG", "textView clicked in anonymous inner class");
}
}));
在lambda之前,为了避免为onclicklistener设置的每个视图创建新对象,最好让activity/fragment实现
View.OnClickListener
接口或使用
Butterknife
的
@OnClick
注释。
下面的lambda会有多大的不同?
titleTextView.setOnClickListener { Log.d("MY_TAG", "textView clicked in lambda") }
反编译Java代码:
TextView var10000 = this.titleTextView;
if (this.titleTextView == null) {
Intrinsics.throwUninitializedPropertyAccessException("titleTextView");
}
var10000.setOnClickListener((OnClickListener)null.INSTANCE);
如果是lambda我看不到
Log.d("MY_TAG", "textView clicked in lambda")
在反编译代码中。