Tuesday, May 10, 2016

Java: Variables in interfaces

Concept of variables in interfaces is allowed in Java, but the concept is different. Variables defined in interfaces are always static and final.

Check this for more details.

Wednesday, May 4, 2016

Java syntax hack

These are equivalent code segments:

Hacky syntax:

Map map = new HashMap() {{
   put("key", "value");
}};

Normal syntax:

Map map = new HashMap();
map.put("key", "value");

Decryption of encrypted syntax

First set of braces is the anonymous inner class (subclassing HashMap). The second set of braces is an instance initializer (rather than a static one) which then sets the values on your HashMap.

Usages

This hacky syntax could be used gracefully when initializing a class member. This way you will avoid adding code to constructor(s) or in static initializer of the class.

Anonymous class that “extends” other class or “implements” some interface in Java?

Anonymous classes in Java are defined in this way:

Syntax for implementing some interface:
Runnable r = new Runnable() {
   public void run() { ... }
};

Syntax for extending other class (is the same):
SomeClass x = new SomeClass() {
   ...
};