我正在探索Java 8源代码,发现代码的这一特定部分非常令人惊讶:
//defined in IntPipeline.java
@Override
public final OptionalInt reduce(IntBinaryOperator op) {
return evaluate(ReduceOps.makeInt(op));
}
@Override
public final OptionalInt max() {
return reduce(Math::max); //this is the gotcha line
}
//defined in Math.java
public static int max(int a, int b) {
return (a >= b) ? a : b;
}
Run Code Online (Sandbox Code Playgroud)
是Math::max什么样的方法指针?普通static方法如何转换为IntBinaryOperator?
我试图看看是否有任何方法可以获得Java 8中作为功能接口的所有接口的列表.我不是在谈论这个页面上的列表:
https://docs.oracle.com/javase/8/docs/api/java/util/function/package-summary.html
相反,我在谈论像Comparator,FileFilter和Runnable这样的接口--API文档显示的接口是这样的功能:
@FunctionalInterface公共接口Runnable
这些地方有完整的清单吗?
谢谢!