码迷,mamicode.com
首页 > 编程语言 > 详细

Java8(三) 方法引用

时间:2020-07-14 00:45:22      阅读:67      评论:0      收藏:0      [点我收藏+]

标签:执行   new t   入参   int   接口   数组   方法   sort   使用方法   

方法引用

方法引用是一个更加紧凑,易读的 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

Java8(三) 方法引用

标签:执行   new t   入参   int   接口   数组   方法   sort   使用方法   

原文地址:https://www.cnblogs.com/lyldelove/p/13296520.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!