方法引用

方法引用实例

package main.java;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.function.Supplier;

/**
 * 方法引用
 */
public class MethodReferences {

    //Supplier是jdk1.8的接口,这里和lamda一起使用了
    public static MethodReferences create(final Supplier<MethodReferences> supplier) {
        return supplier.get();
    }

    public static void collide(final MethodReferences car) {
        System.out.println("Collided " + car.toString());
    }

    public void follow(final MethodReferences another) {
        System.out.println("Following the " + another.toString());
    }

    public void repair() {
        System.out.println("Repaired " + this.toString());
    }

    public static void main(String[] args) {
        final MethodReferences car = MethodReferences.create( MethodReferences::new );
        final List< MethodReferences > cars = Collections.singletonList(car);
        cars.forEach( MethodReferences ::collide );//没搞懂静态方法怎么就把forEach出来的对象传进去了,简单是简单易读性差好多
        //传统方法
        for(MethodReferences m : cars){
            MethodReferences.collide(m);
        }
        cars.forEach( MethodReferences::repair );

        List<String> names = new ArrayList();

        names.add("Google");
        names.add("Runoob");
        names.add("Taobao");
        names.add("Baidu");
        names.add("Sina");

        names.forEach(System.out::println);

    }
}

posted @ 2021-07-30 15:50  时间外的往事  阅读(39)  评论(0)    收藏  举报