Category: Java tutorial
-
default method in interface – Java 8
1. Introduction Before Java 8, interfaces could have only abstract methods. Java 8 has introduced default method which allows interfaces to have methods with implementation. default methods are declared with default keyword at the beginning of the method signature. 2. Need for default methods in Java interface Consider a requirement when you want to add…
-
Local variables referenced from a lambda expression must be final or effectively final
As per Java 8 Language Specification: Any local variable, formal parameter, or exception parameter used but not declared in a lambda expression must either be declared final or be effectively final (§4.12.4), or a compile-time error occurs where the use is attempted. A variable which is not declared as final but whose value is never…
-
Difference between anonymous inner class and lambda expression
Following are the differences between anonymous inner class and lambda expression: In the following code, ‘this’ refers to the current inner class object. So, when we print this.score, the output is 100. In the following code, ‘this’ refers to enclosing class object . So, when we print this.score, the output is 0.
-
Java 9 – Explain differences between JAR file and module
Differences between JAR file and module can be summarized in following points: JAR Module JAR stands for Java Archive and is a file format based on the ZIP file format. It is used for aggregating many files and associated metadata and resources(text, images etc) into one file to distribute as a library or application software.…
-
Need of JPMS – Problems before Java 9
We’ll see in this tutorial, why JPMS was needed and what problems did JPMS solved. Lack of strong encapsulation Encapsulation can be achieved by using a combination of packages and access modifiers (such as private, protected, or public). When you make a class public, then it is public for everyone. There is no way to…
-
JPMS modularity and module – an introduction
1. Introduction Java 9 introduced a new module system that makes modularization of applications easier. Java 9 modularity is built on top of the abstractions Java already has for encapsulations. Introduction of modules in Java 9 was a very big change as it resulted changes in JVM, the standard libraries and in the Java language…
-
Java 8 Runnable example using Lambda expression
Functional interface acts as a type for lambda expression and can be used to invoke lambda expression. java.lang.Runnable is a functional interface as it has only one abstract method, public void run(). We’ll see an example to create Thread without lambda and then with the use of lambda expression. Output
-
How to write and use a lambda expression in Java 8?
Lambda expression is an anonymous function. A lambda expression We’ll learn to convert normal method in to a lambda expression with the help of a simple “Hello World” example. Since a lambda expression does not have a name, modifier and return type, it’s equivalent lambda expression is: If lambda expression has only one executable statement,…
-
Java legal identifiers, keywords and code conventions
All the Java components classes, variables, and methods need names. These names are called identifier. Legal identifiers must be composed of only Unicode characters, numbers, currency symbols, and connecting characters (such as underscores). Few examples of legal identifiers:int _x;int $x;int x2c;int this_is_a_valid_identifier; Few examples of illegal identifiers:int .x;int x.c;int x&;int x-c;int 9x; Java code conventions…
-
Generics in Java – An introduction
Generics is one of the most important features introduced in Java 5. Generics enables classes and interfaces to be parameters when defining classes, interfaces and methods. What the above statement means is an interface or class may be declared to take one or more type parameters, which are written in angle brackets and should be…