13.3 方法引用

如果已经有一个现成的方法可以引用,不需要再实现,可以直接把方法引用过来,假如有这样的代码,只要出现一个定时器事件就打印这个事件对象:
Timer t=new Timer(1000,event-System.out.println(event));
如果用方法引用,就是这么写的:
Timer t=new Timer(1000,System.out::println);
这里的System.out::println就是一个方法引用,两个冒号的写法来源于C++。
方法引用有以下三种情况:
1.对象::非静态方法
System.out::println就是此例。
2.类::静态方法
假如有A这样一个类:
A a=new A("good",(x)-Math.abs(x));
//可以写成这样:
A a=new A("good",Math::abs);
3.类::非静态方法
这类的引用,会把第一个参数作为调用此方法的对象,例如Arrays的sort方法排序,其中strings是一个String数组
Arrays.sort(Strings,String::compareToIgnoreCase);
String::compareToIgnoreCase等价于(x,y)->x.compareToIgnoreCase(y)