heartin's blog

Collection Framework Related Improvements in Java 8

Java 8 has has made some improvements in collections framework such as a new forEach loop, better type inference etc. We will list out those features here.


The forEach method

The default forEach method of the Iterable interface performs the given action for each element of the Iterable until all elements have been processed or the action throws an exception. 

Signature of the methiod is: void forEach(Consumer<? super T> action) [node:read-more:link]

Accessing Effectively Final Variables From Anonymous Inner Classes in Java 8

Before Java 8, you could only use final variables from a surrounding class in an anonymous inner class. In Java 8, within anonymous class (or lambda expressions) you can use effectively final variables: not declared as final but only assigned once. 


Important points about accessing variables from within an anonymous inner class (or lambda expression) [node:read-more:link]

Summary of Different Syntaxes to Write Lambda Expressions in Java 8

Java 8 allows you to write lambda expressions in few varying syntaxes. Let us quickly see those here.


With no arguments

Runnable r = () -> System.out.println(“H”);


Only one argument: with or without parenthesis

ActionListener al1 = (event) -> System.out.println(“Button clicked”);

ActionListener al2 = event -> System.out.println(“Button clicked”);


Java 8 Lambda Expression Basic Syntax and Examples

Lambda expressions implement an interface with only one single abstract methodl. Such interfaces are called as functional interfaces. Since the interface has only one single method (function), passing across that interface implementation gives the impression of passing across that function. Already existing interfaces in Java such as Runnable, Comparator, ActionListener are already functional interfaces, as they have only one abstract method. We will see how we can use lambda expressions with those existing interfaces.


Default and Static methods in Java 8 Interfaces

Before Java 8, interfaces could only have abstract methods and constants. Java 8 allows you to have default as well as static methods inside an interface. This was mainly done for interface unlocking: Now you can add methods to an interface without needing the implementing classes to change.


Default methods

You can add an instance method to an interface through the keyword default.

They are also public similar to the abstract methods. 

Default methods are inherited by subclasses and can be overriden. [node:read-more:link]


Quick Notes Finder Tags

Activities (1) advanced java (1) agile (3) App Servers (6) archived notes (2) ArrayLists (1) Arrays (2) Best Practices (12) Best Practices (Design) (3) Best Practices (Java) (7) Best Practices (Java EE) (1) BigData (3) Chars & Encodings (6) coding problems (2) Collections (15) contests (3) Core Java (All) (53) course plan (2) Database (12) Design patterns (8) dev tools (3) downloads (2) eclipse (9) Essentials (1) examples (14) Exception (1) Exceptions (4) Exercise (1) exercises (6) Getting Started (18) Groovy (2) hadoop (4) hibernate (77) hibernate interview questions (6) History (1) Hot book (5) http monitoring (2) Inheritance (4) intellij (1) java 8 notes (4) Java 9 (1) Java Concepts (7) Java Core (8) java ee exercises (1) java ee interview questions (2) Java Elements (16) Java Environment (1) Java Features (4) java interview points (4) java interview questions (4) javajee initiatives (1) javajee thoughts (3) Java Performance (6) Java Programmer 1 (12) Java Programmer 2 (8) Javascript Frameworks (1) Java SE Professional (1) JPA 1 - Module (6) JPA 1 - Modules (1) JSP (1) Legacy Java (1) linked list (3) maven (1) Multithreading (16) NFR (1) No SQL (1) Object Oriented (9) OCPJP (4) OCPWCD (1) OOAD (3) Operators (4) Overloading (2) Overriding (2) Overviews (1) policies (1) programming (1) Quartz Scheduler (1) Quizzes (17) RabbitMQ (1) references (2) resources (1) restful web service (3) Searching (1) security (10) Servlets (8) Servlets and JSP (31) Site Usage Guidelines (1) Sorting (1) source code management (1) spring (4) spring boot (3) Spring Examples (1) Spring Features (1) spring jpa (1) Stack (1) Streams & IO (3) Strings (11) SW Developer Tools (2) testing (1) troubleshooting (1) user interface (1) vxml (8) web services (1) Web Technologies (1) Web Technology Books (1) youtube (1)