当前位置: 移动技术网 > IT编程>移动开发>Android > 使用 Lambda 取代 Android 中的匿名类

使用 Lambda 取代 Android 中的匿名类

2019年07月24日  | 移动技术网IT编程  | 我要评论

魅滋茵哪里有卖,在劫难逃下载,现货白银投资

lambda是第十一个希腊字母,大写λ,小写λ,额,跑题了…lambda表达式 是java8的新特性之一:

  1. lambda表达式
  2. 函数式接口
  3. 流api
  4. 默认方法
  5. 新的date
  6. time api

lambda表达式 取代了匿名类 ,取消了模板,允许用函数式风格编写代码。

由于最近接触了rxjava,遇到了lambda,立马就喜欢上了~所以就学习了一下.

本文主要介绍一下lambda在android中替代匿名类的部分使用场景.

在android中使用lambda

gradle-retrolambda

a gradle plugin for getting java lambda support in java 6, 7 and android

在android中使用我们需要使用这个插件,按照配置配置完就行.

实战使用

由于lambda 可以取代匿名类,所以我们先来挑几个匿名类练练手.

这里先简单的提及一下lambda的语法:() -> {}咋一看可能觉得这个什么鬼啊?看不懂啊!

不急,看几个例子先~

设置监听事件

android中我们设置监听一般这么写:

mfab.setonclicklistener(new view.onclicklistener() {
   @override
   public void onclick(view v) {
    dosomething();
   }
  });

这么写as会提示说匿名类new view.onclicklistener()能被lambda代替:

提示

那么用lambda可以如何写呢?

mfab.setonclicklistener(v->dosomething());

看到了么?

整个匿名内部类被v->dosomething()给代替了.

是不是非常简单?

ps: 本例子中的`v`代表onclick传递的参数v,参数不能省略,但是可以随意命名.

实现runnable

在android中我们起个线程一般这么写:

new thread(new runnable() {
   @override
   public void run() {
    dosomething();
   }
  }).start();

而使用lambda表达式的话可以这么写:

new thread(() -> dosomething()).start();

另外实例化runnable成员变量也可以这么写:

runnable runnable = ()->dosomething();

看完这两个例子是否对lambda感兴趣了呢?后续我还会继续学习,有兴趣的请继续关注~

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网