A Java Exception thrown by a method that has been invoked at an illegal or inappropriate time. It extends RuntimeException, which means it does not need to be caught.
In many cases, code that is throwing NullPointerException should be argument-checking and throwing this, with a decent explanatory message.