How do I fix a NullPointerException

0 votes
What are Null Pointer Exceptions (java.lang.NullPointerException) and how do they come into existence?

What method can I use to s=determine the cause of the exception?
Apr 13, 2018 in Java by Akrati
• 3,190 points
693 views

1 answer to this question.

0 votes

When you declare a reference variable (i.e. an object) you are actually creating a reference to an object. Consider the following code where you declare a variable of primitive type int:

int num=0;
num=100;

In this example, the variable num is an int and Java initializes it to 0. When you assign num to 100,value 100 is written into the memory location pointed by num.

But, when you try to declare a reference type this is not the case

Integer num;
num = new Integer(100);

The first line declares a variable named num, but, it does not contain a primitive value. Instead, it contains a reference (because the type is Integer which is an object of the Wrapper class). Since you did not say what to point to, Java sets it to null, meaning "I am pointing at nothing".

In the second line, the new keyword is used to instantiate (or create) an object of type Integer and the pointer variable num is assigned this object. You can now reference the object using the dereferencing operator . (a dot).

TheNullPointerException occurs when you declare a variable but did not create an object. If you attempt to dereference num before creating the object you get a NullPointerException. 

In the most cases, the compiler will catch the problem and let you know that "num may not have been initialized" but sometimes you write code that does not directly create the object.

For instance, you may have a method as follows:

public void doSomething(SomeObject obj) {
   //do something to obj
}

In which case you are not creating the object obj, rather assuming that it was created before the doSomething method was called. Unfortunately, it is possible to call the method like this:

doSomething(null);

in which case obj is null. If the method is intended to do something to the passed-in object, it is appropriate to throw the NullPointerException because it's a programmer error and the programmer will need that information for debugging purposes.

There may be cases where the purpose of the method is not solely to operate on the passed object, and therefore a null parameter may be acceptable. In this case, you would need to check for a null parameter and behave differently. You should also explain this in the documentation. For example, doSomething could be written as:

/**
  * @param obj An optional foo for ____. May be null, in which case 
  *  the result will be ____.
  */
public void doSomething(SomeObject obj) {
    if(obj != null) {
       //do something
    } else {
       //do something else
    }
}
answered Apr 13, 2018 by Parth
• 4,630 points

Related Questions In Java

0 votes
0 answers

What is a NullPointerException, and how do I fix it?

What are Null Pointer Exceptions (java.lang.NullPointerException) and ...READ MORE

Apr 26, 2022 in Java by Rahul
• 3,380 points
353 views
0 votes
0 answers

What is a IOException, and how do I fix it?

What is causing java.io.IOException? What does it ...READ MORE

May 19, 2022 in Java by Kichu
• 19,050 points
210 views
0 votes
1 answer

How do I create a Java string from the contents of a file?

If you're looking for an alternative that ...READ MORE

answered Apr 19, 2018 in Java by Rishabh
• 3,620 points
949 views
0 votes
2 answers

How do I convert an input stream into a byte array

You could probably try this if you ...READ MORE

answered Aug 29, 2019 in Java by Sirajul
• 59,230 points
3,373 views
0 votes
2 answers

Does the finally block always execute in Java?

public static void main(String[] args) { ...READ MORE

answered Aug 8, 2018 in Java by Sushmita
• 6,910 points
1,752 views
0 votes
1 answer

How to resolve the java.net.ConnectException in Java?

If you are getting java.net.ConnectionException, it means ...READ MORE

answered Jun 4, 2018 in Java by Akrati
• 3,190 points
1,975 views
0 votes
2 answers

“Could not find or load main class” mean?

Use the final modifier to enforce good initialization. Avoid returning ...READ MORE

answered Sep 18, 2018 in Java by Sushmita
• 6,910 points
4,180 views
0 votes
1 answer

Need for finalize() in Java

finalize() is a method called by the ...READ MORE

answered May 9, 2018 in Java by code.reaper12
• 3,500 points
523 views
0 votes
1 answer

How can I read a large text file line by line using Java?

// Open the file FileInputStream file = new ...READ MORE

answered May 2, 2018 in Java by Parth
• 4,630 points
702 views
0 votes
2 answers

How do i create generic array in Java

as first tip you cannot assign value ...READ MORE

answered Feb 13, 2020 in Java by sama
16,894 views
webinar REGISTER FOR FREE WEBINAR X
REGISTER NOW
webinar_success Thank you for registering Join Edureka Meetup community for 100+ Free Webinars each month JOIN MEETUP GROUP