Java 8方法引用和构造器调用如何实现长尾词的?
- 内容介绍
- 文章标签
- 相关推荐
本文共计493个文字,预计阅读时间需要2分钟。
Lambda表达式可以简化以下六种对Lambda的简化方式,也称为方法或构造器引用:
1. 方法引用:直接使用现有方法,例如 `String::length`。
2.构造器引用:创建对象时使用,例如 `Integer::new`。
3.数组构造器引用:创建数组时使用,例如 `int[]::new`。
4.类方法引用:调用类的静态方法,例如 `Math::max`。
5.对象方法引用:调用对象的实例方法,例如 `Thread::run`。
6.特定类的方法引用:使用特定类的特定方法,例如 `StringBuffer::append`。
lamdba表达式可以进行简化下面介绍了6种对lamdba进行简化的方式也称之为对方法或构造器进行引用。如果一个lambda表达式代表的只是直接调用这个方法也称之为对方法或构造器进行引用。如果一个lambda表达式代表的只是直接调用这个方法那么最好还说用名称来调用它而不是去描述如何调用它。显示地指明方法的名称可以让你的代码可读性更好。
1. 参数类别和返回类型必须与函数式接口中的抽象方法一致 2. 如果参数列表中的第一个参数是实例方法的调用者第二个参数是实例方法的参数则可以用ClassName::method
对象::实例方法 -- 方法引用
//用lambda表达式实现Consumer consumer x -> System.out.println(x);consumer.accept("hello world");//out实现了println方法Consumer consumer1 System.out::println;consumer1.accept("hello word 1");
类名::静态方法 -- 方法引用
//用lambda表达式实现BiFunction biFun (x,y) -> Integer.compare(x,y);//类名静态方法BiFunction biFun1 Integer::compare;int result1 biFun.apply(100,200);int result2 biFun1.apply(100,200);
类名::实例方法 -- 方法引用
//用lambda表达式实现BiFunction fun1 (s1,s2)-> s1.equals(s2);//类名实例方法BiFunction fun2 String::equals;fun1.apply("hello","hello");fun2.apply("hello","hello");
类名::new -- 构造器引用
//用lambda表达式实现Supplier sup ()->new String();//构造方法引用 类名newSupplier sup1 String::new;
类名::new -- 构造器引用
//用lambda表达式实现Function function x->new Integer(x);//类名newFunction function1 Integer::new;function1.apply("100");
String[]::new --数组引用
//用lambda表达式实现Function array x -> new String [x];//类型[]::newFunction array1 String[]::new;array1.apply(5);
所有代码执行结果
没有报错
100010Process finished with exit code 0
本文共计493个文字,预计阅读时间需要2分钟。
Lambda表达式可以简化以下六种对Lambda的简化方式,也称为方法或构造器引用:
1. 方法引用:直接使用现有方法,例如 `String::length`。
2.构造器引用:创建对象时使用,例如 `Integer::new`。
3.数组构造器引用:创建数组时使用,例如 `int[]::new`。
4.类方法引用:调用类的静态方法,例如 `Math::max`。
5.对象方法引用:调用对象的实例方法,例如 `Thread::run`。
6.特定类的方法引用:使用特定类的特定方法,例如 `StringBuffer::append`。
lamdba表达式可以进行简化下面介绍了6种对lamdba进行简化的方式也称之为对方法或构造器进行引用。如果一个lambda表达式代表的只是直接调用这个方法也称之为对方法或构造器进行引用。如果一个lambda表达式代表的只是直接调用这个方法那么最好还说用名称来调用它而不是去描述如何调用它。显示地指明方法的名称可以让你的代码可读性更好。
1. 参数类别和返回类型必须与函数式接口中的抽象方法一致 2. 如果参数列表中的第一个参数是实例方法的调用者第二个参数是实例方法的参数则可以用ClassName::method
对象::实例方法 -- 方法引用
//用lambda表达式实现Consumer consumer x -> System.out.println(x);consumer.accept("hello world");//out实现了println方法Consumer consumer1 System.out::println;consumer1.accept("hello word 1");
类名::静态方法 -- 方法引用
//用lambda表达式实现BiFunction biFun (x,y) -> Integer.compare(x,y);//类名静态方法BiFunction biFun1 Integer::compare;int result1 biFun.apply(100,200);int result2 biFun1.apply(100,200);
类名::实例方法 -- 方法引用
//用lambda表达式实现BiFunction fun1 (s1,s2)-> s1.equals(s2);//类名实例方法BiFunction fun2 String::equals;fun1.apply("hello","hello");fun2.apply("hello","hello");
类名::new -- 构造器引用
//用lambda表达式实现Supplier sup ()->new String();//构造方法引用 类名newSupplier sup1 String::new;
类名::new -- 构造器引用
//用lambda表达式实现Function function x->new Integer(x);//类名newFunction function1 Integer::new;function1.apply("100");
String[]::new --数组引用
//用lambda表达式实现Function array x -> new String [x];//类型[]::newFunction array1 String[]::new;array1.apply(5);
所有代码执行结果
没有报错
100010Process finished with exit code 0

