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

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...

Java Hashset HackerRank Solution | Programming Blog

Java Hashset HackerRank Solution with Explanation   Problem Statement :- In computer science, a set is an abstract data type that can store certain values, without any particular order, and no repeated values. {1,2,3} is an example of a set, but {1,2,2} is not a set. Today you will learn how to use sets in java by solving this problem. You are given n pairs of strings. Two pairs (a,b) and (c,d) are identical if a = c and b = d. That also implies (a,b) is not same as (b,a). After taking each pair as input, you need to print number of unique pairs you currently have. See full problem description in HackerRank Website :- https://www.hackerrank.com/challenges/java-hashset/problem Let's see solution of problem. import java.util.HashSet; import java.util.Scanner; public class Solution {     public static void main(String[] args) {         Scanner s = new Scanner(System.in);         System.out.println("Enter tot...