来源:自学PHP网 时间:2021-01-04 10:18 作者:小飞侠 阅读:次
[导读] Java8的Lambda表达式你真的会吗...
|
今天带来Java8的Lambda表达式你真的会吗教程详解
理解LambdaLambda表达式可以是一段可以传递的代码,它的核心思想是将面向对象中的传递数据变成传递行为,也就是行为参数化,将不同的行为作为参数传入方法。 随着函数式编程思想的引进,Lambda表达式让可以用更加简洁流畅的代码来代替之前冗余的Java代码。 口说无凭,直接上个例子吧。在Java8之前,关于线程代码是这样的:
class Task implements Runnable{
@Override
public void run() {
System.out.println("Java8 之前 实现Runnable接口中的run方法");
}
}
Runnable t = new Task();
我们定义了一个Task类,让它实现Runnable接口,实现仅有的run方法,我们希望执行的线程体虽然只有一句话,但我们仍然花了大量大代码去定义。为了简化,我们可以采用匿名内部类的方式:
Runnable taskBeforeJava8 = new Runnable() {
@Override
public void run() {
System.out.println("Java8 之前的写法, 传入匿名类");
}
};
但是,其实还是不够简洁,我们用Lambda的写法是这样的:
// java8 之后
Runnable taskAfterJava8 = () -> System.out.println("Java8 之后的写法,lambda表达式");
我们仅仅使用 基础语法
(parameters) -> action
(parameters) -> expression
(parameters) -> {statements;}
parameters代表变量,可以为空,可以为单,可以为空,你能想到的方式他都可以。 action是实现的代码逻辑部分,可以是一行代码 下面是一些合法的示例,你可以看看有没有掌握:
|
函数式接口
@FunctionalInterface // 此注解作用的接口 只能拥有一个抽象方法
public interface Runnable {
public abstract void run();
}
在这里, 常用的函数式接口JDK原生为我们提供了一些常用的函数式编程接口,让我们在使用他们编程时,不必关心接口名,方法名,参数名,只需关注它的参数类型,参数个数,返回值。
|
消费型接口
@FunctionalInterface // 此注解作用的接口 只能拥有一个抽象方法
public interface Runnable {
public abstract void run();
}
供给型接口
/**
* 供给型接口, 无参数,返回T
*/
public static void supplierTest() {
Supplier
断言型接口
/**
* 断言型 传入参数T ,返回boolean
*/
public static void predicateTest() {
Predicate
函数型接口
/**
* 函数型接口 传入T 返回R
*/
public static void functionTest() {
List
方法引用方法引用可以看作特定Lambda表达式的快捷写法,主要分为以下两种:
/**
* 方法引用
* 1. 指向静态方法的方法引用
* 2. 指向现有对象的实例方法的方法引用
*
* @author Summerday
*/
public class MethodReferenceTest {
public static List
数组引用
/**
* 数组引用
* @author Summerday
*/
public class ArrayReferenceTest {
public static void main(String[] args) {
// 普通lambda
Function
构造器引用
/**
* 构造器引用
* @author Summerday
*/
public class ConstructorReferenceTest {
public static void main(String[] args) {
// 普通lambda
Supplier
总结
到此这篇关于Java8的Lambda表达式你真的会吗的文章就介绍到这了,更多相关Java8的Lambda表达式内容请搜索自学php网以前的文章或继续浏览下面的相关文章希望大家以后多多支持自学php网! 以上就是关于Java8的Lambda表达式你真的会吗全部内容,感谢大家支持自学php网。 |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com