Very often, I see non-static variable in 'nested' classes (not exactly inner class kind of nested but class composition) being accessed via the dot notation.
Eg.
int a = getClassA().classB.classC.x; where
getClassA() return an object of type Class A and x is the variable we are interested to access.
classB is a variable in ClassA.
classC is a variable in ClassB.
x is a variable in ClassC.
However, when I tried to recreate a similar test scenario, I get NullPointerException error.
Code
public class Main()
{
public static void main(String[] args) {
int a = getClassA().classB.classC.x;
}
}
public class ClassA
{
ClassB classB;
}
public class ClassB
{
ClassC classC;
}
public class ClassC
{
int x = 1;
}
//Class Main, A, B and C are in separate files.
Add-on
Read somewhere that in c# there is auto implemented property. For the example above, Class A will be
public Class A {
private ClassB _classB;
public ClassB classB
{
get {
if (_classB == null) _classB = new ClassB();
return _classB; }
set {_classB = value; }
}
}
So, ClassB is instantiated as it is accessed via the dot notation. Is there something similar in Java?
Appreciate any help on this.
Thank you.