zoukankan      html  css  js  c++  java
  • Java8(三) 方法引用

    方法引用

    方法引用是一个更加紧凑,易读的 Lambda 表达式。

    当Lambda表达式中只是执行一个已存在方法调用时使用,且方法引用所使用方法的入参和返回值与lambda表达式实现的函数式接口的入参和返回值一致。

    1 几种类型

    1.1 方法引用
    对象引用 :: 实例方法名
    public class Test{
        public static void main(String[] args){
            Test test = new Test();
            // lambda表达式使用:
            Arrays.asList(new String[] {"a", "c", "b"}).stream().forEach(s -> test.println(s));
            // 特定对象的实例方法引用:
            Arrays.asList(new String[] {"a", "c", "b"}).stream().forEach(test :: println);
        }
        
        public void println(String s){
            System.out.println(s);
        }
    }
    
    类名 :: 静态方法名
    public class Test{
        public static void main(String[] args){
            //lambda表达式使用:
            Arrays.asList(new String[] {"a", "c", "b"}).stream().forEach(s -> Test.println(s));
            //静态方法引用:
            Arrays.asList(new String[] {"a", "c", "b"}).stream().forEach(Test :: println);
        }
        
        public static void println(String s){
            System.out.println(s);
        }
    }
    
    类名 :: 实例方法名
    public class Test{
        public static void main(String[] args){
            String[] strArray = {"a", "c", "b"};
            //lambda表达式使用:
            Arrays.sort(strArray, (s1,s2) -> s1.compareToIgnoreCase(s2));
            //类名 :: 实例方法名引用:
            Arrays.sort(strArray, String::compareToIgnoreCase);
        }
    }
    
    1.2 构造器引用
    类名 :: new
    // Lambda表达式
    name -> new Person(name)
        
    // 方法引用
    Person::new
    
    1.3 数组引用
    类型[] :: new
    // Lambda表达式
    length -> new int[length]
    
    // 方法引用
    int[]::new
    
  • 相关阅读:
    (转帖) oracle是否归档模式及修改模式
    (转帖) Oracle实例恢复(Oracle instance recovery)
    实习第一周总结
    UML类图几种关系的总结
    表格排序
    利用js查找页面中的内链,外链
    事件机制(事件冒泡与事件捕获)
    谈 CSS 模块化
    初学后台框架总结篇二——快速了解CI框架
    初学后台框架总结篇一——学习过程
  • 原文地址:https://www.cnblogs.com/lyldelove/p/13296520.html
Copyright © 2011-2022 走看看