Java 8

Click here to load reader

  • date post

    17-Jul-2015
  • Category

    Software

  • view

    52
  • download

    0

Embed Size (px)

Transcript of Java 8

  • Lambda, Method References & Aggregate Operations

    Md. Fasihul KabirSoftware Engineer, Platform Dhaka, Escenic Asia Ltd.

  • Some Cool Features of Java 8 Lambda expressions Method references Default Methods (Defender methods) A new Stream API Optional A new Date/Time API Nashorn, the new JavaScript engine Removal of the Permanent Generation and more

  • Some Cool Features of Java 8 Lambda Expressions Method References Default Methods (Defender methods) A new Stream API Optional A new Date/Time API Nashorn, the new JavaScript engine Removal of the Permanent Generation and more

  • Lambda Expressions

  • Syntax

    (arguments) -> {body}

  • Example

    button.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent event){

    System.out.println("button clicked");}

    });

  • button.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent event){

    System.out.println("button clicked");}

    });

  • button.addActionListener(event -> System.out.println("button clicked")

    );

  • Structure of Lambda Expressions A lambda expression can have zero, one or more parameters The type of the parameters can be explicitly declared or it can be inferred from the

    context. e.g. (int a) is same as just (a)

    Parameters are enclosed in parentheses and separated by commas. e.g. (a, b) or (int a, int b) or (String a, int b, float c)

    Empty parentheses are used to represent an empty set of parameters. e.g. () -> 42

    When there is a single parameter, if its type is inferred, it is not mandatory to use parentheses

    e.g. a -> return a*a The body of the lambda expressions can contain zero, one or more statements If body of lambda expression has single statement curly brackets are not mandatory and

    the return type of the anonymous function is the same as that of the body expression When there is more than one statement in body than these must be enclosed in curly

    brackets (a code block) and the return type of the anonymous function is the same as the type of the value returned within the code block, or void if nothing is returned

  • Method References

  • Kinds of Method ReferencesKind ExampleReference to a static method ContainingClass::staticMethodNameReference to an instance method of a particular object

    containingObject::instanceMethodName

    Reference to an instance method of an arbitrary object of a particular type

    ContainingType::methodName

    Reference to a constructor ClassName::new

  • Reference to a Static Method The method reference Person::compareByAge is a

    reference to a static method.

  • Reference to an Instance Method of a Particular Object

  • Reference to an Instance Method of an Arbitrary Object of a Particular Type

  • Reference to a Constructor

  • Aggregate Operations

  • Pipelines and Streams

  • Components of Pipeline A source: This could be a collection, an array, a

    generator function, or an I/O channel. In this example, the source is the collection roster.

    Zero or more intermediate operations. An intermediate operation, such as filter, produces a new stream.

    A terminal operation. A terminal operation, such as forEach, produces a non-stream result, such as a primitive value (like a double value), a collection, or in the case of forEach, no value at all.