• Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

NullPointer Exception

 
Manju Devarla
Ranch Hand
Posts: 85
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Why below given prg throws Nullpointer exception


[HENRY: Added Code Tags. Formatted Code.]
[ December 20, 2006: Message edited by: Henry Wong ]
 
ramya ray
Ranch Hand
Posts: 101
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I think, because you are calling method on null reference of Test .
 
pengfei cao
Greenhorn
Posts: 4
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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!
 
Geetha Arthanari
Greenhorn
Posts: 25
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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.
 
Nicholas Cheung
Ranch Hand
Posts: 4982
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Always keep in mind, for any non-primitive objects, default value will NOT be given, and you must NEW it before use.

Nick
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic