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<String> 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 表达式的类。