方法引用实例
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);
}
}
![]()