Skip to main content

Double brace initialization in Java with examples

                                            Double brace initialization in java

 In this blog we cover what is double brace in java. Some of you may heard this terms first time.

What is Double Brace Intilization?


When we use initialization block for an anonymous inner class it becomes double brace initialization in java.
Double brace initialization creates an anonymous class derived from the specified class (the outer braces), and provides an initializer block within that class (the inner braces).

When we create collection we do following things.

    Declare a variable and initialize it.   
        ArrayList<String> listOfProgramming = new ArrayList<>();
    
    Insert values into collection.       
        listOfProgramming.add("Java");
        listOfProgramming.add("JavaScript");
        listOfProgramming.add("Python");

    Pass this list to method paramer.
        PrintProgrammingLanguages(listOfProgramming);

So we do above things for creating collection and add value.
But in java we can simply add values into collection using double brace intialization.
Lets see how its work.

Syntax of  double brace initialization.
    {{ }}

Lets see example of double brace intialization.
import java.util.ArrayList;

public class DoubleBraceIntilization {

    public static void main(String[] args) {

        ArrayList<String> listOfProgramming = new ArrayList<>() {{
            add("Java");
            add("JavaScript");
            add("Python");
            add("Php");
        }};
       
        System.out.println(listOfProgramming);

    }
}

Output  :-
[Java, JavaScript, Python, Php]

So in above example,
  • The first brace creates a new anonymous inner class.
  • The second brace creates an instance initializers like static block in Class.

First brace creates a new Anonymous Inner Class. These inner classes are capable of accessing the behavior of their parent class.So,in our case, we are actually creating a subclass of ArrayList class, so this inner class is capable of using add() method.

And Second set of braces are nothing but instance initializers. it is like static initializers due to similar brace like struct.
Only difference is that static initializer is added with static keyword, and is run only once; no matter how many objects we create.

Lets see another example with Map.

import java.util.HashMap;
import java.util.Set;

public class DoubleBraceIntilization {

    public static void main(String[] args) {
       
         HashMap<String,String> mapOfProgramming = new HashMap<String,String>()
             {{
                  put("1", "Java");
                  put("2", "JavaScript");
                  put("3", "Python");
                  put("4", "Php");
            }};
           
            Set<String> keySet = mapOfProgramming .keySet();
            for (String string : keySet) {
                System.out.println(string+" -> "+ mapOfProgramming .get(string));
            }
      }
}

Output :-
1 -> Java
2 -> JavaScript
3 -> Python
4 -> Php

Advantages Of Double brace intialization :-
  • Code is readable.
  • Fewer lines of code compared to the native way of creation and initialization.
  • Creation initialization is done in the same expression.
Disadvantages of Double brace intialization :-
  • Double brace creates extra class every time when we use.
  • Doesn't work if the class we are trying to extend is marked final.
  • Holds a hidden reference to the enclosing instance, which may cause memory leaks.
You also like :-


Comments

Popular posts from this blog

Sales by Match HackerRank Solution | Java Solution

HackerRank Sales by Match problem solution in Java   Problem Description : Alex works at a clothing store. There is a large pile of socks that must be paired by color for sale. Given an array of integers representing the color of each sock, determine how many pairs of socks with matching colors there are. For example, there are n=7 socks with colors socks = [1,2,1,2,1,3,2]. There is one pair of color 1 and one of color 2 . There are three odd socks left, one of each color. The number of pairs is 2 .   Example 1 : Input : n = 6 arr = [1, 2, 3, 4, 5, 6] Output : 0 Explanation : We have 6 socks with all different colors, So print 0. Example 2 : Input : n = 10 arr = [1, 2, 3, 4, 1, 4, 2, 7, 9, 9] Output : 4 Explanation : We have 10 socks. There is pair of color 1, 2, 4 and 9, So print 4. This problem easily solved by HashMap . Store all pair of socks one by one in Map and check if any pair is present in Map or not. If pair is present then increment ans variable by 1 ...

Queen's Attack II HackerRank Solution in Java with Explanation

Queen's Attack II Problem's Solution in Java (Chessboard Problem)   Problem Description : You will be given a square chess board with one queen and a number of obstacles placed on it. Determine how many squares the queen can attack.  A queen is standing on an n * n chessboard. The chess board's rows are numbered from 1 to n, going from bottom to top. Its columns are numbered from 1 to n, going from left to right. Each square is referenced by a tuple, (r, c), describing the row r and column c, where the square is located. The queen is standing at position (r_q, c_q). In a single move, queen can attack any square in any of the eight directions The queen can move: Horizontally (left, right) Vertically (up, down) Diagonally (four directions: up-left, up-right, down-left, down-right) The queen can move any number of squares in any of these directions, but it cannot move through obstacles. Input Format : n : The size of the chessboard ( n x n ). k : The number of obstacles...