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

Plus Minus HackerRank Solution in Java | Programming Blog

Java Solution for HackerRank Plus Minus Problem Given an array of integers, calculate the ratios of its elements that are positive , negative , and zero . Print the decimal value of each fraction on a new line with 6 places after the decimal. Example 1 : array = [1, 1, 0, -1, -1] There are N = 5 elements, two positive, two negative and one zero. Their ratios are 2/5 = 0.400000, 2/5 = 0.400000 and 1/5 = 0.200000. Results are printed as:  0.400000 0.400000 0.200000 proportion of positive values proportion of negative values proportion of zeros Example 2 : array = [-4, 3, -9, 0, 4, 1]  There are 3 positive numbers, 2 negative numbers, and 1 zero in array. Following is answer : 3/6 = 0.500000 2/6 = 0.333333 1/6 = 0.166667 Lets see solution Solution 1 import java.io.*; import java.math.*; import java.security.*; import java.text.*; import java.util.*; import java.util.concurrent.*; import java.util.function.*; import java.util.regex.*; import java.util.stream.*; import static java.util.st

Flipping the Matrix HackerRank Solution in Java with Explanation

Java Solution for Flipping the Matrix | Find Highest Sum of Upper-Left Quadrant of Matrix Problem Description : Sean invented a game involving a 2n * 2n matrix where each cell of the matrix contains an integer. He can reverse any of its rows or columns any number of times. The goal of the game is to maximize the sum of the elements in the n *n submatrix located in the upper-left quadrant of the matrix. Given the initial configurations for q matrices, help Sean reverse the rows and columns of each matrix in the best possible way so that the sum of the elements in the matrix's upper-left quadrant is maximal.  Input : matrix = [[1, 2], [3, 4]] Output : 4 Input : matrix = [[112, 42, 83, 119], [56, 125, 56, 49], [15, 78, 101, 43], [62, 98, 114, 108]] Output : 119 + 114 + 56 + 125 = 414 Full Problem Description : Flipping the Matrix Problem Description   Here we can find solution using following pattern, So simply we have to find Max of same number of box like (1,1,1,1). And last