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?
In Java:
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? |
|||
|
When executing your code, the Java runtime does the following:
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. EDIT I had a related question a while ago at Stack Overflow, see here. |
||||
|
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 |
||||
|