美文网首页
Java8 方法引用

Java8 方法引用

作者: 酷酷的小k | 来源:发表于2019-01-25 00:44 被阅读0次

    方法引用通过方法的名字来指向一个方法

    方法引用可以使语言的构造更紧凑简洁,减少冗余代码

    方法引用使用一对冒号 ::

    Java 中 4 种不同的方法引用例子如下:

    package com.mvc.test;
    
    import java.util.Arrays;
    import java.util.List;
    
    /**
     * 方法引用
     *
     * @author smallk
     * @date 2019/1/22 15:34
     */
    public class MethodReferenceTest {
    
        public static void main(String[] args) {
            //构造器引用:它的语法是Class::new
            Student student = Student.create(Student::new);
            List<Student> list = Arrays.asList(student);
            //静态方法引用:它的语法是Class::static_method
            list.forEach(Student::collide);
            //特定类的任意对象的方法引用:它的语法是Class::method
            list.forEach(Student::repair);
            //特定对象的方法引用:它的语法是instance::method
            list.forEach(student::follow);
        }
    }
    
    interface Supplier<T> {
    
        /**
         * T
         *
         * @return T
         */
        T get();
    }
    
    class Student {
    
        public static Student create(Supplier<Student> supplier) {
            return supplier.get();
        }
    
        public static void collide(Student student) {
            System.out.println("Collided " + student.toString());
        }
    
        public void follow(Student student) {
            System.out.println("Following the " + student.toString());
        }
    
        public void repair() {
            System.out.println("Repaired " + this.toString());
        }
    }
    
    方法引用 Lambda 表达式
    Class::new (a, b...) -> new Class(a, b...)
    Class::static_method (a, b...) -> Class.static_method(a, b...)
    Class::method (a, b...) -> a.method(b...)
    instance::method (a, b...) -> instance.method(a, b...)

    所谓的方法引用,可以理解为 Lambda 表达式的另外一种表现形式。

    源于:http://www.runoob.com/java/java8-method-references.html

    相关文章

      网友评论

          本文标题:Java8 方法引用

          本文链接:https://www.haomeiwen.com/subject/bjppjqtx.html