Compares two Class values in terms of specificity; the
more specific class is said to be "smaller" than the
more generic one hence the Object class is the
"largest" possible class. When two classes are not
comparable (i.e. not assignable from each other) in either
direction a NotComparableException will be thrown. both input
objects should be Class values otherwise a
ClassCastException will be thrown.