今天看到组长写的一行代码一头雾水
SafeUtil.safeRun(UpdateModule.getInstance()::start);
再跑去SafeUtil类里看方法的定义
public static void safeRun(@NonNull final Runnable runnable, String ...messages){
try{
runnable.run();
}catch (Exception e){
LogUtil.err2file("异常:" + Arrays.toString(messages), e, 1);
}
}
内事不决问百度,于是我查了下Google,原来这是java8的新特性,叫做方法引用,当lamda表达式表达的匿名函数已经存在的时候,就可以直接以::的形式来写,这里定义的run方法和start方法本质上是同一种函数,所以可以这样写。而且发现现在android已经可以原生支持java8的部分特性了,比如lambda表达式,接口默认函数,方法引用,但是streamApi还不能使用。