Syntax for 'new' in java

Constructors of non static member classes take an extra hidden parameter which is a reference to an instance of the immediately enclosing class. There is also a syntactic extension of 'new'.

In the below code,

class K{
    static class Ka{
        static class Kb{
            class Kc{
                class Kd{

                }
            }
        }
    }
}

class Test{
    K.Ka.Kb.Kc.Kd k = new K.Ka.Kb().new Kc().new Kd();
}

Can you please help me understand the meaning of Kb() in K.Ka.Kb().new Kc().new Kd()? I understand that new Kc() is required as told in first paragraph.

Jon Skeet
people
quotationmark

It's calling the constructor of Kb. It's easier to show this in three statements:

K.Ka.Kb x1 = new K.Ka.Kb();
K.Ka.Kb.Kc x2 = x1.new Kc(); // Pass x1 as the hidden constructor arg
K.Ka.Kb.Kd.Kd k = x2.new Kd(); // Pass x2 as the hidden constructor arg

people

See more on this question at Stackoverflow