如题,最近刚刚开始学android和java,在使用android的过程中发现可以使用lambda表达式。
Button clearBtn = (Button)findViewById(R.id.clear_btn);
clearBtn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Toast.makeText(LoginActivity.this, "button clicked clear", Toast.LENGTH_LONG).show();
}
});
比如上面这段代码,如何将new View.OnClickListener()修改成lambda表达式?
Java支持 Lambda 是从 1.8 开始的,Android是基于 Java6 (1.6) 的,所以…… No Way。
如果你是用的 Android Studio,它可能会以 Lambda 的方式简化显示,但实际上不是 Lambda。
在支持 lambda 的 Java 语法中,你的代码对应的 lambda 大概应该是这样
java
clearBtn.setOnClickListener(v -> { Toast.makeText(LoginActivity.this, "button clicked clear", Toast.LENGTH_LONG).show(); })
你要是使用idea的话,编译器会提醒使用lambda,但是这样的话。。。并不能通过编译,因为android不支持java8
如果觉得学一门新语言不麻烦的话,推荐Kotlin 支持lambda
Android暂时还不能用,如果在Android studio中使用的话,会有提示“lambda expression are not supported at this language level”。因为lambda是在java8 引进的。
附上一个支持lambda的语言Kotlin的博客:http://www.jianshu.com/p/b6a2cda2f806
楼上都在坑楼主???
负责任地告诉楼主,你是可以在Android使用lambda的,只要用了
https://github.com/evant/gradle-retrolambda
就可以了,gradle-retrolambda是一个gradle插件,把retrolambda的特性带到了android