Java 8方法引用与构造器引用,数组引用举例分析

发布时间:2021-11-24 16:24:31 作者:iii
来源:亿速云 阅读:108

这篇文章主要讲解了“Java 8方法引用与构造器引用,数组引用举例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java 8方法引用与构造器引用,数组引用举例分析”吧!

import org.junit.Test;import java.io.PrintStream;import java.util.Comparator;import java.util.function.BiFunction;import java.util.function.BiPredicate;import java.util.function.Consumer;import java.util.function.Function;import java.util.function.Supplier;/* * 一、方法引用:若 Lambda 体中的功能,已经有方法提供了实现,可以使用方法引用 *             (可以将方法引用理解为 Lambda 表达式的另外一种表现形式) * 
 * 1. 对象的引用 :: 实例方法名 * 
 * 2. 类名 :: 静态方法名 * 
 * 3. 类名 :: 实例方法名 * 
 * 注意: *      ①方法引用所引用的方法的参数列表与返回值类型,需要与函数式接口中抽象方法的参数列表和返回值类型保持一致! *      ②若Lambda 的参数列表的第一个参数,是实例方法的调用者,第二个参数(或无参)是实例方法的参数时,格式: ClassName::MethodName * 
 * 二、构造器引用 :构造器的参数列表,需要与函数式接口中参数列表保持一致! * 
 * 1. 类名 :: new * 
 * 三、数组引用 * 
 *     类型[] :: new; * 
 * 
 */public class TestMethodRef {   //数组引用   @Test   public void test8(){
      Function<Integer, String[]> fun = (args) -> new String[args];      String[] strs = fun.apply(10);      System.out.println(strs.length);            System.out.println("--------------------------");            Function<Integer, Employee[]> fun2 = Employee[] :: new;      Employee[] emps = fun2.apply(20);      System.out.println(emps.length);   }   
   //构造器引用   @Test   public void test7(){
      Function<String, Employee> fun = Employee::new;      Employee em=fun.apply("www");      System.out.println(em.getName());            BiFunction<String, Integer, Employee> fun2 = Employee::new;   }   
   @Test   public void test6(){
      Supplier<Employee> sup = () -> new Employee();      System.out.println(sup.get());            System.out.println("------------------------------------");            Supplier<Employee> sup2 = Employee::new;      System.out.println(sup2.get());   }   
   //类名 :: 实例方法名   @Test   public void test5(){
      BiPredicate<String, String> bp = (x, y) -> x.equals(y);      System.out.println(bp.test("abcde", "abcde"));            System.out.println("-----------------------------------------");            BiPredicate<String, String> bp2 = String::equals;      System.out.println(bp2.test("abc", "abc"));            System.out.println("-----------------------------------------");                  Function<Employee, String> fun = (e) -> e.show();      System.out.println(fun.apply(new Employee()));            System.out.println("-----------------------------------------");            Function<Employee, String> fun2 = Employee::show;      System.out.println(fun2.apply(new Employee()));         }   
   //类名 :: 静态方法名   @Test   public void test4(){
      Comparator<Integer> com = (x, y) -> Integer.compare(x, y);            System.out.println("-------------------------------------");            Comparator<Integer> com2 = Integer::compare;   }   
   @Test   public void test3(){
      BiFunction<Double, Double, Double> fun = (x, y) -> Math.max(x, y);      System.out.println(fun.apply(1.5, 22.2));            System.out.println("--------------------------------------------------");            BiFunction<Double, Double, Double> fun2 = Math::max;      System.out.println(fun2.apply(1.2, 1.5));   }   //对象的引用 :: 实例方法名   @Test   public void test2(){
      Employee emp = new Employee(101, "张三", 18, 9999.99);            Supplier<String> sup = () -> emp.getName();      System.out.println(sup.get());            System.out.println("----------------------------------");            Supplier<String> sup2 = emp::getName;      System.out.println(sup2.get());   }   
   @Test   public void test1(){
      PrintStream ps = System.out;      Consumer<String> con = (str) -> ps.println(str);      con.accept("Hello World!");            System.out.println("--------------------------------");            Consumer<String> con2 = ps::println;      con2.accept("Hello Java8!");            Consumer<String> con3 = System.out::println;   }
   
}

感谢各位的阅读,以上就是“Java 8方法引用与构造器引用,数组引用举例分析”的内容了,经过本文的学习后,相信大家对Java 8方法引用与构造器引用,数组引用举例分析这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

推荐阅读:
  1. java8中的方法引用与构造器引用
  2. java开发中要注意哪些误区

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

java

上一篇:Java的Serializable接口怎么使用

下一篇:开源PaaS Rainbond架构与实现的示例分析

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》