在使用过程中,不建议在自定义接口中使用,原因是因为Lambda
常应用在只有一个方法的接口中。而我们自定义的接口,后期可能会增加接口中的方法,这样修改的地方就比较多,因为Lambda
不支持多个方法的接口,AndroidStudio
也并没有在多个实现方法时提示要使用Lambda
; 所以Lambda
在Android中的常用场景应该为:
-
点击事件:OnClick
-
新建线程:new Thread
-
runOnUiThread
等等
eg:
常规操作
button.setOnClickListener(new View.OnClickListener(){
@Override public void onClick(View v){
doSomeWork();
}
});
lambda
button.setOnClickListener(
(View v) -> {
doSomeWork();
}
);
语法
( 参数列表… ) -> { 语句块… }
用自定义的接口当栗子
MainActivity
public class MainActivity extends AppCompatActivity {
private final String TAG = “MainActivity”;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 无参无返回值
new Test(new Test.Callback() {
@Override
public void success() {
Log.e(TAG, “无参无返回值”);
}
});
new Test(() -> Log.e(TAG, “无参无返回值”));
// 有参无返回值
new Test(new Test.Callback1() {
@Override
public void success(String msg) {
Log.e(TAG, “有参无返回值”);
}
});
new Test((String msg) -> Log.e(TAG, “有参无返回值”));
//无参有返回值
new Test(new Test.Callback2() {
@Override
public String success() {
return “无参有返回值”;
}
});
new Test(() -> “无参有返回值”);
//有参有返回值
new Test(new Test.Callback3() {
@Override
public String success(String msg) {
return msg + “的回调”;
}
更多学习和讨论,欢迎加入我们!
有许多来自一线的技术大牛,也有在小厂或外包公司奋斗的码农,我们致力打造一个平等,高质量的Android交流圈子,不一定能短期就让每个人的技术突飞猛进,但从长远来说,眼光,格局,长远发展的方向才是最重要的。
这里有2000+小伙伴,让你的学习不寂寞~·
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!