函数式接口之方法引用

Posted 技术很low的瓜贼

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了函数式接口之方法引用相关的知识,希望对你有一定的参考价值。

文章目录

JAVA新特性的方法引用

  • 方法引用主要指通过方法的名字来指向一个方法而不需要为方法引用提供方法体,该方法的调用交给函数式接口执行
  • 方法引用是在特定场景下lambda表达式的一种简化表示,可以进一步简化代码的编写使代码更加紧凑简洁,从而减少冗余代码
  • 方法引用使用一对冒号 :: 将类或对象与方法名进行连接

常用使用方式:

  • 对象的非静态方法引用ObjectName :: MethodName
  • 类的静态方法引用ClassName :: StaticMethodName
  • 类的非静态方法引用ClassName :: MethodName
  • 构造器的引用ClassName :: new
  • 数组的引用TypeName[] :: new

代码:

  • 实体类:
public class Person

    private String name;
    private int age;

    public Person() 
    

    public Person(String name, int age) 
        this.name = name;
        this.age = age;
    

    public void show() 
        System.out.println("方法引用案例");
    
    @Override
    public String toString() 
        return "Person" +
                "name='" + name + '\\'' +
                ", age=" + age +
                '';
    

    public String getName() 
        return name;
    

    public void setName(String name) 
        this.name = name;
    

    public int getAge() 
        return age;
    

    public void setAge(int age) 
        this.age = age;
    


  • 测试类
public class 引用 

    public static void main(String[] args) 
        // 1.对象的非静态方法引用   ObjectName :: MethodName
        Person person = new Person("tb", 21);
        Runnable runnable = person::show;
        runnable.run();

        // 2.类的非静态方法引用   ClassName :: MethodName
        // 其中一个参数作为调用对象来调用该方法时,可以使用该引用方式
        Comparator<Integer> comparator = Integer::compareTo;
        System.out.println(comparator.compare(10, 20));


        // 3.类的静态方法引用 ClassName :: StaticMethodName
        Function<String, Integer> function = Integer::parseInt;
        System.out.println(function.apply("456123") + 5);

        // 4.构造器的引用 ClassName :: new
        BiFunction<String, Integer, Person> biFunction = Person::new;
        System.out.println(biFunction.apply("tbtb", 2121));

        // 5.数组的引用 TypeName[] :: new
        Function<Integer, int[]> function1 = int[]::new;
        System.out.println(Arrays.toString(function1.apply(5)));
    


以上是关于函数式接口之方法引用的主要内容,如果未能解决你的问题,请参考以下文章

函数式接口方法引用

12函数式接口方法引用

Java8新特性——Lambda表达式之四大核心函数式接口 & 方法/构造器/数组引用

Java8新特性——Lambda表达式之四大核心函数式接口 & 方法/构造器/数组引用

Java8新特性——Lambda表达式之基本语法 & 自定义函数式接口

Java8新特性——Lambda表达式之基本语法 & 自定义函数式接口