Hello all;

In the original patch which added the basic lambda functional interfaces, 
CR#8001634 [1], none of the interfaces extended other interfaces. The reason 
was primarily that the javac compiler did not, at the time that 8001634 was 
proposed, support extension methods. The compiler now supports adding of method 
defaults so this patch improves the functional interfaces by filing in the 
inheritance hierarchy. 

Adding the parent interfaces and default methods allows each functional 
interface to be used in more places. It is especially important for the 
functional interfaces which support primitive types, IntSupplier, IntFunction, 
IntUnaryOperator, IntBinaryOperator, etc. We expect that eventually standard 
implementations of these interfaces will be provided for functions like max, 
min, sum, etc. By extending the reference oriented functional interfaces such 
as Function, the primitive implementations can be used with the boxed primitive 
types along with the primitive types for which they are defined.

The patch to add parent interfaces and default methods can be found here:

http://cr.openjdk.java.net/~mduigou/8004015/0/webrev/
http://cr.openjdk.java.net/~mduigou/8004015/0/specdiff/java/util/function/package-summary.html

Mike

[1] http://hg.openjdk.java.net/jdk8/tl/jdk/rev/c2e80176a697

Reply via email to