Of course the “You shall not instantiate an item of this class” statement has been violated, but if this is the logic behind that, then we should all throw
AssertionErrorseverywhere, and that is obviously not what happens.
The code isn’t saying the user shouldn’t call the zero-args constructor. The assertion is there to say that as far as the programmer is aware, he/she has made it impossible to call the zero-args constructor (in this case by making it
private and not calling it from within
Example‘s code). And so if a call occurs, that assertion has been violated, and so
AssertionError is appropriate.