zoukankan      html  css  js  c++  java
  • java8_方法引用、构造器引用、数组引用

    方法引用

    • 若Lambda 体中的内容有方法已经实现了,我们可以使用“方法引用”(可以理解为方法引用是Lambda)表达式的另一种表现形式。
    • 主要有三种语法格式
      • 对象 :: 实例方法名
      • 类 :: 静态方法名
      • 类 :: 实例方法名
    • 注意
      • Lambda 体中调用方法的参数列表与返回值类型,要与函数式接口抽象方法的该函数列表和返回值类型保持一致。
      • 若Lambda参数列表中的第一个参数是实例方法的调用者,而第二个参数是实例方法的参数时。可以使用 ClassName :: method
    • 对象 :: 实例方法名
    @Test
    public void test() {
            Consumer<String> consumer1 = (x) -> System.out.println(x);
            consumer1.accept("hello");
            Consumer<String> consumer2 = System.out::println;
            consumer2.accept("world");
    }
    
    • 类 :: 静态方法名
    @Test
    public void test() {
            Comparator<Integer> com1 = (x,y)->Integer.compare(x,y);
            Comparator<Integer> com2 = Integer::compare;
    }
    
    • 类 :: 实例方法名
    @Test
    public void test() {
            BiPredicate<String,String> bp1 = (x,y) -> x.equals(y);
            BiPredicate<String,String> bp2 = String::equals;
    }
    

    构造器引用

    • 格式:ClassName::new
    • 注意:需要调用的构造器的参数列表要与hans
    @Test
    public void test09() {
            Supplier<String> sup1 = () -> new String();
            Supplier<String> sup2 = String :: new;
    }
    

    数组引用

    • 格式:Type []::new
    @Test
    public void test10() {
            Function<Integer,String[]> fun1 = (x) -> new String[x];
            Function<Integer,String[]> fun2 = String[]::new;
    }
    

    后学末进,才疏学浅,如有疏误,还望不吝赐教。

  • 相关阅读:
    查准率(precision)和查全率(recall)
    数据集大全:25个深度学习的开放数据集
    利用贝叶斯算法实现手写体识别(Python)
    KNN算法识别手写数字
    判断点在直线的左右哪一侧
    多节点bigchaindb集群部署
    java 多线程 3 synchronized 同步
    java 多线程 1 “常用的实现多线程的2种方式”:Thread 和 Runnable
    java 字符串
    java 关键字static
  • 原文地址:https://www.cnblogs.com/ifreeky/p/7686989.html
Copyright © 2011-2022 走看看