class ClassA { public void methodA() { ClassB classB = new ClassB(); classB.getValue(); //System.out.println(" ClassA's methodA()!"); } } class ClassB { public Test classC=new Test(); public String getValue() { //System.out.println("ClassB's getValue() !"); return classC.getValue();
} } public class Test { public String value="ss"; public String getValue() { value = "ClassB"; // System.out.println("Test's getValue()!"); return value;
} public static void main(String s[]) { ClassA a = new ClassA(); a.methodA(); // System.out.println("main mothods()!"); } }
Look at "public Test classC=new Test(); ",if I write this, there is no errors! Compilation successfully! So I think, the object classC must be instantiate. This is my own standpoint!
class ClassB { public Test classC; public String getValue() { return classC.getValue(); }}
In the above ClassB,ur statement is: public Test classC;-------Here classC contains only null value. Then only NullPointerException is occurring.
so for avoid this, we have two options: 1. we need to use statement like this, Test classC=new Test();-----Now classC having details of Test class. or 2. we've to change the class Test like this.
public class Test { public static String value="ss"; public static String getValue() { value = "ClassB"; return value; } public static void main(String s[]) { ClassA a = new ClassA(); a.methodA(); } }
Because static methods and static variables are class level variables.