[Android] Java 8 中 Lambda 表达式的使用

Java 8 中 Lambda 表达式的使用
在 Java 8 的版本更新中,增加了 Lambda 表达式支持 . 让我们可以用更简洁的代码写出完整的功能 . 下面就看看关于 Lambda 表达式的使用方式把 .

平时我们在使用 Thread 的时候 , 通常会传入一个 Runnable 的匿名内部类 , 代码会变得多 . 类似下面这样 .

new Thread(new Runnable() {
    @Override
    public void run() {
    System.out.println("我用了6行");
    }
}).start();

如果我们使用了 Java 8 的 Lambda 表达式 , 只需一行代码就可完成 .

new Thread(() -> System.out.println("我用了一行") ).start();

这是在调用一个线程的时候试用 Lambda 的方式 . 在 Android 开发中 , 更多的是回调接口会用到 . 比如下面的这个 .

checkBtn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Toast.makeText(AboutActivity.this, "非 Lambel ",Toast.LENGTH_LONG).show();
    }
});

在使用了 Lambda 之后 .

checkBtn.setOnClickListener(v1 -> Toast.makeText(AboutActivity.this, "是 Lambel ",Toast.LENGTH_LONG).show());

其中传入的 View 变量 v1 可以任意起名字 , 但是推荐使用简单命名 让代码更简洁 .

总体格式大致如下:

参数 -> 方法体

使用 Lambda 表达式还可以简单快速的遍历 List 集合 .

List num = new LinkedList<>();
num.add("tt1"); 
num.add("tt2");
num.forEach(t-> System.out.println(t));

Lambda表达式 vs 匿名类

既然 Lambda 表达式即将正式取代 java 代码中的匿名内部类,那么有必要对二者做一个比较分析。一个关键的不同点就是关键字 this 。匿名类的 this 关键字指向匿名类,而 Lambda 表达式的 this 关键字指向包围 Lambda 表达式的类。

你可能感兴趣的:([Android] Java 8 中 Lambda 表达式的使用)