here are dozens of features added to Java 8, the most significant ones are mentioned below −
- Lambda expression − Adds functional processing capability to Java.
- Method references − Referencing functions by their names instead of invoking them directly. Using functions as parameter.
- Default method − Interface to have default method implementation.
- New tools − New compiler tools and utilities are added like ‘jdeps’ to figure out dependencies.
- Stream API − New stream API to facilitate pipeline processing.
- Date Time API − Improved date time API.
- Optional − Emphasis on best practices to handle null values properly.
- Nashorn, JavaScript Engine − A Java-based engine to execute JavaScript code.A lambda expression is characterized by the following syntax −
parameter -> expression body
Following are the important characteristics of a lambda expression − - Optional type declaration − No need to declare the type of a parameter. The compiler can inference the same from the value of the parameter.
- Optional parenthesis around parameter − No need to declare a single parameter in parenthesis. For multiple parameters, parentheses are required.
- Optional curly braces − No need to use curly braces in expression body if the body contains a single statement.
- Optional return keyword − The compiler automatically returns the value if the body has a single expression to return the value. Curly braces are required to indicate that expression returns a value.
Lambda Expressions Example
Create the following Java program using editor and save in some folder like C:\>JAVA.
Java8Tester.java
public class Java8Tester { public static void main(String args[]){ Java8Tester tester = new Java8Tester(); //with type declaration MathOperation addition = (int a, int b) -> a + b; //with out type declaration MathOperation subtraction = (a, b) -> a - b; //with return statement along with curly braces MathOperation multiplication = (int a, int b) -> { return a * b; }; //without return statement and without curly braces MathOperation division = (int a, int b) -> a / b; System.out.println("10 + 5 = " + tester.operate(10, 5, addition)); System.out.println("10 - 5 = " + tester.operate(10, 5, subtraction)); System.out.println("10 x 5 = " + tester.operate(10, 5, multiplication)); System.out.println("10 / 5 = " + tester.operate(10, 5, division)); //with parenthesis GreetingService greetService1 = message -> System.out.println("Hello " + message); //without parenthesis GreetingService greetService2 = (message) -> System.out.println("Hello " + message); greetService1.sayMessage("Mahesh"); greetService2.sayMessage("Suresh"); } interface MathOperation { int operation(int a, int b); } interface GreetingService { void sayMessage(String message); } private int operate(int a, int b, MathOperation mathOperation){ return mathOperation.operation(a, b); } }
- Lambda expressions are used primarily to define inline implementation of a functional interface, i.e., an interface with a single method only.
No comments:
Post a Comment