Wednesday 30 August 2017

Java - Why are interface variables static and final by default?

Interface variables are static because Java interfaces cannot be instantiated in their own right; the value of the variable must be assigned in a static context in which no instance exists. The final modifier ensures the value assigned to the interface variable is a true constant that cannot be re-assigned by program code.

public: for the accessibility across all the classes, just like the methods present in the interface

static: as interface cannot have an object, the interfaceName.variableName can be used to reference it or directly the variableName in the class implementing it.

final: to make them constants. If 2 classes implement the same interface and you give both of them the right to change the value, conflict will occur in the current value of the var, which is why only one time initialization is permitted.
Also all these modifiers are implicit for an interface, you dont really need to specify any of them.

Can we define variables in interface in Java?

In Java , interface doesn't allow you to declare any instance variables. Using a variable declared in an interface as an instance variable will return a compile time error. You can declare a constant variable, using static final which is different from an instance variable.

Saturday 19 August 2017

How Java Lambdas Expressions affect the code in simple way

Let us start with some basic examples. Here, we will see how lambda expressions affect the code in a simple way. Having a list of players, the “for loop”, as programmers often refers to the for statement, can be translated in Java SE 8 as below:

String[] s1 = {"Anant", "Nilan", "Dolagobinda", "Babu", "Rupeli", "Sanjay", "Akshay", "Santosh"};
List<String> players =  Arrays.asList(s1);
      
// Old looping
for (String player : players) {
     System.out.print(player + "; ");
}
      

// Using lambda expression and functional operations
players.forEach((player) -> System.out.print(player + "; "));

// Using double colon operator in Java 8
players.forEach(System.out::println);

What is JAVA Lambda Expression???

Java Lambda expressions are a new and important feature included in Java SE 8. A lambda expression provides a way to represent one method interface using an expression. A lambda expression is like a method, it provides a list of formal parameters and a body (which can be an expression or a block of code) expressed in terms of those parameters.

Lambda expressions also improve the Collection libraries. Java SE 8 added two packages related to bulk data operations for Collections, the java.util.function package, and the java.util.stream. A stream is like an iterator, but with a lot of extra functionality. Taken together, lambda expressions and streams are the biggest change to Java programming since the generics and annotations were added to the language.