引用方法
- 在java8中引入lambda表达式,简化了内部类的书写;有时lambda表达式中只调用了一个函数,这时就可以使用引用方法进一步简化书写
- 方法引用通过方法的名字来指向一个方法。
- 引用方法可以分成四类:
- 调用new方法
- 调用静态方法
- 调用特定类 任意对象的方法
- 调用特定对象的方法
public class MethodTest {
public static Car create(final Supplier<Car> supplier) {
return supplier.get();
}
public static void main(String[] args){
// Car car=MethodTest.create(new Supplier<Car>() {
// @Override
// public Car get() {
// return new Car();
// }
// });
// todo 方法引用是对lambda表达式的进一步简化
// MethodTest.create(()->new Car());
// todo 调用new方法
Car car=MethodTest.create(Car::new);
// todo 调用静态方法
List<Integer> intList= Arrays.asList(1,2,3,4,5);
intList.forEach(MyUtil::print);
// todo 调用特定类 任意对象的方法
List<Car> carList=Arrays.asList(new Car("ming"),new Car("ming1"),new Car("jia"));
carList.forEach(Car::printName);
// todo 调用特定对象的方法
MyUtil util=new MyUtil();
carList.forEach(util::out);
}
}
class Car{
private String name;
public Car(){}
public Car(String name){
this.name=name;
}
public void printName(){
System.out.println(this.name);
}
public String getName(){
return name;
}
}
class MyUtil{
public static void print(int i){
System.out.println("int="+i);
}
public void out(Car car){
System.out.println(car.getName());
}
}
参考:http://www.runoob.com/java/java8-method-references.html