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?
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.
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