org.jfree.util

## Class ClassComparator

- java.lang.Object
- - org.jfree.util.ClassComparator

- All Implemented Interfaces:
    java.io.Serializable, java.util.Comparator

      public class ClassComparator
      extends java.lang.Object
      implements java.util.Comparator, java.io.Serializable

  The class comparator can be used to compare and sort classes and their superclasses. The comparator is not able to compare classes which have no relation...
  Author:
    Thomas Morgner
  See Also:
    Serialized Form

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `ClassComparator()` Defaultconstructor.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `int` | `compare(java.lang.Object o1, java.lang.Object o2)` Compares its two arguments for order.
    `boolean` | `isComparable(java.lang.Class c1, java.lang.Class c2)` Checks, whether the given classes are comparable.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

    - ### Methods inherited from interface java.util.Comparator

      `equals`

- - ### Constructor Detail

    - #### ClassComparator

          public ClassComparator()

      Defaultconstructor.

  - ### Method Detail

    - #### compare

          public int compare(java.lang.Object o1,
                    java.lang.Object o2)

      Compares its two arguments for order. Returns a negative integer, zero, or a positive integer as the first argument is less than, equal to, or greater than the second.

      Note: throws ClassCastException if the arguments' types prevent them from being compared by this Comparator. And IllegalArgumentException if the classes share no relation. The implementor must ensure that `sgn(compare(x, y)) == -sgn(compare(y, x))` for all `x` and `y`. (This implies that `compare(x, y)` must throw an exception if and only if `compare(y, x)` throws an exception.)

      The implementor must also ensure that the relation is transitive: `((compare(x, y)>0) && (compare(y, z)>0))` implies `compare(x, z)>0`.

      Finally, the implementer must ensure that `compare(x, y)==0` implies that `sgn(compare(x, z))==sgn(compare(y, z))` for all `z`.

      It is generally the case, but not strictly required that `(compare(x, y)==0) == (x.equals(y))`. Generally speaking, any comparator that violates this condition should clearly indicate this fact. The recommended language is "Note: this comparator imposes orderings that are inconsistent with equals."

      Specified by:
        `compare` in interface `java.util.Comparator`
      Parameters:
        `o1` - the first object to be compared.
        `o2` - the second object to be compared.
      Returns:
        a negative integer, zero, or a positive integer as the first argument is less than, equal to, or greater than the second.

    - #### isComparable

          public boolean isComparable(java.lang.Class c1,
                             java.lang.Class c2)

      Checks, whether the given classes are comparable. This method will return true, if one of the classes is assignable from the other class.
      Parameters:
        `c1` - the first class to compare
        `c2` - the second class to compare
      Returns:
        true, if the classes share a direct relation, false otherwise.