Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

In Java:

int count = (Integer) null;

throws a java.lang.NullPointerException.

Why doesn't this throw a Class Cast Exception for ease in programmer understanding?

Why was this exception chosen over any other exception?

share|improve this question
up vote 38 down vote accepted

When executing your code, the Java runtime does the following:

  1. Cast null to an object of class Integer.
  2. Try to unbox the Integer object to an int by calling the method intValue()
  3. Calling a method on a null object throws a NullPointerException.

In other words, null can be cast to Integer without a problem, but a null integer object cannot be converted to a value of type int.


I had a related question a while ago at Stack Overflow, see here.

share|improve this answer

Java successfully casts null to an Integer reference that references no object.

That's OK because being unistantiated is a valid state for a reference.

It's the calling of a method of a non existing object that can't be performed.

Performing the cast (Integer)null is the same as declaring an Integer variable and then failing to assign it an new (or already existing) Integer object instance.

share|improve this answer

To unbox a Integer into a int i.e. in int i = new Integer(15);, i actually equals new Integer(15).intValue() i = (Integer) o; where Object o = 15 is the same as o = Integer.valueOf(15); but i = null; throws an NullPointerException because i then equals null.intValue() which throws a NullPointerException.

share|improve this answer
The answer that was accepted almost two years ago provides almost the same explanation, but is more clear. This answer is also not correct for Java 5+: it now uses the valueOf() factory methods rather than creating new instances for boxing. – Snowman May 5 '14 at 19:50

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.