JDK8-方法引用 ,构造引用,数组引用(四)
2017-06-19 21:45
225 查看
package cn.wcj.jdk8.lambda.test; import java.io.PrintStream; import java.util.function.BiFunction; import java.util.function.BiPredicate; import java.util.function.Consumer; import java.util.function.Function; import java.util.function.Predicate; import java.util.function.Supplier; import org.junit.Test; /** * * <p>Title:LambdaTest4 </p> * <p>Description:方法引用 ,构造引用,数组引用</p> * <p>Company:Software College </p> * @author SuccessKey(WangCJ) * @date 2017年6月19日 下午4:37:06 */ /* * 一、方法引用:若 Lambda 体中的功能,已经有方法提供了实现,可以使用方法引用 * (可以将方法引用理解为 Lambda 表达式的另外一种表现形式) * * 1. 对象的引用 :: 实例方法名 * * 2. 类名 :: 静态方法名 * * 3. 类名 :: 实例方法名 * * 注意: * ①方法引用所引用的方法的参数列表与返回值类型,需要与函数式接口中抽象方法的参数列表和返回值类型保持一致! * ②若Lambda 的参数列表的第一个参数,是实例方法的调用者,第二个参数(或无参)是实例方法的参数时,格式: ClassName::MethodName * * 二、构造器引用 :构造器的参数列表,需要与函数式接口中参数列表保持一致! * * 1. 类名 :: new * * 三、数组引用 * * 类型[] :: new; * * */ public class LambdaTest4 { //对象的引用 :: 实例方法名 @Test public void test1() { PrintStream printStream = System.out ; Consumer<String> consumer=(x)->printStream.println(x); consumer.accept("刘彤大宝剑爽歪歪!!!") ; Consumer<String> consumer2=printStream::println ; consumer2.accept("刘彤最爱大宝剑!!!") ; Consumer<String> consumer3=System.out::println ; consumer3.accept("刘彤哥哥我约你,晚上老地方见!!!"); } //对象的引用 :: 实例方法名 @Test public void test2(){ Emp emp=new Emp("666", "刘彤", 666.0, 666) ; Supplier<String> supplier=()->emp.getEname() ; System.out.println(supplier.get()) ; Supplier<String> supplier2=emp::getEname ; System.out.println(supplier2.get()); } @Test public void test3(){ BiPredicate<String, String> bp=(x,y)->x.equalsIgnoreCase(y) ; boolean b = bp.test("hello", "Hello") ; System.out.println(b); BiPredicate<String, String> bp2=String::equalsIgnoreCase ; boolean b2 = bp2.test("JAVA", "java") ; System.out.println(b2); } //类名 :: 静态方法名 @Test public void test4(){ BiFunction<Integer, Integer, Integer> fun=(x,y)->Math.max(x, y) ; System.out.println(fun.apply(1, 2)) ; BiFunction<Integer, Integer, Integer> fun2=Math::max ; System.out.println(fun2.apply(200, 100)); } //构造器引用 @Test public void test5(){ Function<String, Emp> fun=(x)->new Emp(x) ; System.out.println(fun.apply("8888")) ; Function<String, Emp> fun2=Emp::new ; System.out.println(fun2.apply("8888")) ; BiFunction<String, String, Emp> bf=Emp::new ; System.out.println(bf.apply("8888", "刘八蛋")) ; } //数组引用 @Test public void test6(){ Function<Integer, String[]> fun=(len)->new String[len] ; String[] arr = fun.apply(10) ; System.out.println(arr.length) ; Function<Integer, String[]> fun2=String[]::new ; System.out.println(fun2.apply(20).length); } }
相关文章推荐
- JDK8-练习题使用方法引用、构造引用、数组引用改造(五)
- JDK8新特性☞方法构造方法的引用
- Java面向对象02-方法的签名,重载,构造方法和引用类型数组
- 另一种拼接数据方法,利用数组的传引用做的。
- JavaSE8基础 String 通过构造方法 将整个一维byte数组化为String
- Java面向对象(1) —— 构造方法、数组
- JavaScript引用类型之Array数组的拼接方法-concat()和截取方法-slice()
- PHP中数组,字符串和对象的在方法中的引用方式
- Java8新特性-004-方法、构造器、数组引用
- 类与对象、引用传递、封装、构造方法、匿名对象笔记
- C#方法的六种参数,值参数、引用参数、输出参数、参数数组、命名参数、可选参数
- jdk8 lambda的方法引用引起的编译器bug
- JavaSE8基础 String 通过构造方法把部分一维byte数组转为字符串
- C++对象数组调用构造/析构函数的方法
- 对象数组的构造方法
- 写一个方法对任意引用数据类型数组进行排序(入门级慎看,很难!!!)
- Array数组(引用)排序两种简单方法
- jdk8-方法引用
- Java基础---基础加强---增强for循环、自动拆装箱及享元、枚举的作用、实现带有构造方法、透彻分析反射的基础_Class类、成员变量的反射、数组参数的成员方法进行反射、数组的反射应用
- list()构造:一种从数组中方便获取值的方法