In java 8 method reference is introduced as a helper for the outstanding feature, Lambda Expression. In some cases a lambda expression does nothing but to call an exsting method. Method reference let you make this kind of lambda expression cleaner and shorter.
Let see an example, suppose we have a stream created from a User list. The class User has a int field call age with getter and setter.
List<User> users = Arrays. //... add user in to list Stream<User> stream = users.stream();
First without using method reference to calculate the averge age of all users.
Double averageAgeDouble = stream.collect(Collectors.averagingDouble((User u)->u.getAge()));
Using method reference, it looks like below
Double averageAgeDouble = stream.collect(Collectors.averagingDouble(User::getAge));
The method reference is shorter than normal lambda expression. The syntax is className::methodName, which in our case is User::getAge, means arbitrary object of class User and the method name is getAge().
0 comments:
Post a Comment