Class Classes

Object
Classes

public final class Classes extends Object
A set of miscellaneous methods working on Class objects.
Since:
2.5
Author:
Martin Desruisseaux (IRD)
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final byte
    Constants to be used in switch statements.
    static final byte
    Constants to be used in switch statements.
    static final byte
    Constants to be used in switch statements.
    static final byte
    Constants to be used in switch statements.
    static final byte
    Constants to be used in switch statements.
    static final byte
    Constants to be used in switch statements.
    static final byte
    Constants to be used in switch statements.
    static final byte
    Constants to be used in switch statements.
    static final byte
    Constants to be used in switch statements.
  • Method Summary

    Modifier and Type
    Method
    Description
    static Class<?>
    Returns the upper bounds of the parameterized type of the given attribute.
    static Class<?>
    If the given method is a getter or a setter for a parameterized attribute, returns the upper bounds of the parameterized type.
    static Class<?>
    commonClass(Collection<?> objects)
    Returns the most specific class which is a common parent of all specified objects.
    static int
    getBitCount(Class<?> type)
    Returns the number of bits used by number of the specified type.
    static <T> Class<? extends T>
    getClass(T object)
    Returns the class of the specified object, or null if object is null.
    static byte
    Returns one of DOUBLE, FLOAT, LONG, INTEGER, SHORT, BYTE, CHARACTER, BOOLEAN or OTHER constants for the given type.
    static String
    Returns a short class name for the specified object.
    static String
    getShortName(Class<?> classe)
    Returns a short class name for the specified class.
    static boolean
    isFloat(Class<?> type)
    Returns true if the given type is a floating point type.
    static boolean
    isInteger(Class<?> type)
    Returns true if the given type is an integer type.
    static Class<?>
    Changes a primitive class to its wrapper (e.g.
    static <T> boolean
    sameInterfaces(Class<? extends T> object1, Class<? extends T> object2, Class<T> base)
    Returns true if the two specified objects implements exactly the same set of interfaces.
    static Class<?>
    Returns the most specific class implemented by the objects in the given collection.
    static <T> T
    valueOf(Class<T> type, String value)
    Converts the specified string into a value object.
    static Class<?>
    Changes a wrapper class to its primitive (e.g.

    Methods inherited from class Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • DOUBLE

      public static final byte DOUBLE
      Constants to be used in switch statements.
      See Also:
    • FLOAT

      public static final byte FLOAT
      Constants to be used in switch statements.
      See Also:
    • LONG

      public static final byte LONG
      Constants to be used in switch statements.
      See Also:
    • INTEGER

      public static final byte INTEGER
      Constants to be used in switch statements.
      See Also:
    • SHORT

      public static final byte SHORT
      Constants to be used in switch statements.
      See Also:
    • BYTE

      public static final byte BYTE
      Constants to be used in switch statements.
      See Also:
    • CHARACTER

      public static final byte CHARACTER
      Constants to be used in switch statements.
      See Also:
    • BOOLEAN

      public static final byte BOOLEAN
      Constants to be used in switch statements.
      See Also:
    • OTHER

      public static final byte OTHER
      Constants to be used in switch statements.
      See Also:
  • Method Details

    • boundOfParameterizedAttribute

      public static Class<?> boundOfParameterizedAttribute(Field field)
      Returns the upper bounds of the parameterized type of the given attribute. If the attribute does not have a parameterized type, returns null.

      This method is typically used for fetching the type of elements in a collection. We do not provide a method working from a Class instance because of the way parameterized types are implemented in Java (by erasure).

      Examples: When invoking this method for a field of the type below:

      • Set<Number> returns Number.class.
      • Set<? extends Number> returns Number.class as well, since that collection can not (in theory) contain instances of super-classes; Number is the upper bound.
      • Set<? super Number> returns Object.class, because that collection is allowed to contain such elements.
      • Set returns null because that collection is un-parameterized.
      Parameters:
      field - The field for which to obtain the parameterized type.
      Returns:
      The upper bound of parameterized type, or null if the given field is not of a parameterized type.
    • boundOfParameterizedAttribute

      public static Class<?> boundOfParameterizedAttribute(Method method)
      If the given method is a getter or a setter for a parameterized attribute, returns the upper bounds of the parameterized type. Otherwise returns null. This method provides the same semantic than boundOfParameterizedAttribute(Field), but works on a getter or setter method rather then the field. See the javadoc of above methods for more details.

      This method is typically used for fetching the type of elements in a collection. We do not provide a method working from a Class instance because of the way parameterized types are implemented in Java (by erasure).

      Parameters:
      method - The getter or setter method for which to obtain the parameterized type.
      Returns:
      The upper bound of parameterized type, or null if the given method do not opperate on an object of a parameterized type.
    • getClass

      public static <T> Class<? extends T> getClass(T object)
      Returns the class of the specified object, or null if object is null. This method is also useful for fetching the class of an object known only by its bound type. As of Java 6, the usual pattern:
       Number n = 0;
       Class<? extends Number> c = n.getClass();
       
      doesn't seem to work if Number is replaced by a parametirez type T.
      Type Parameters:
      T - The type of the given object.
      Parameters:
      object - The object for which to get the class, or null.
      Returns:
      The class of the given object, or null if the given object was null.
    • specializedClass

      public static Class<?> specializedClass(Collection<?> objects)
      Returns the most specific class implemented by the objects in the given collection. If no class are assignable to all others, then this method returns the most specific common super class.
      Parameters:
      objects - A collection of objects. May contains duplicated values and null values.
      Returns:
      The most specific class.
    • commonClass

      public static Class<?> commonClass(Collection<?> objects)
      Returns the most specific class which is a common parent of all specified objects.
      Parameters:
      objects - A collection of objects. May contains duplicated values and null values.
      Returns:
      The most specific class common to all supplied objects.
    • sameInterfaces

      public static <T> boolean sameInterfaces(Class<? extends T> object1, Class<? extends T> object2, Class<T> base)
      Returns true if the two specified objects implements exactly the same set of interfaces. Only interfaces assignable to base are compared. Declaration order doesn't matter. For example in ISO 19111, different interfaces exist for different coordinate system geometries (CartesianCS, PolarCS, etc.). We can check if two CS implementations has the same geometry with the following code:
      if (sameInterfaces(cs1, cs2, CoordinateSystem.class))
      Type Parameters:
      T - A common parent for both objects.
      Parameters:
      object1 - The first object to check for interfaces.
      object2 - The second object to check for interfaces.
      base - The parent of all interfaces to check.
      Returns:
      true if both objects implement the same set of interfaces, considering only sub-interfaces of base.
    • isFloat

      public static boolean isFloat(Class<?> type)
      Returns true if the given type is a floating point type.
      Parameters:
      type - The type to test (may be null).
      Returns:
      true if type is the primitive or wrapper class of Float or Double.
    • isInteger

      public static boolean isInteger(Class<?> type)
      Returns true if the given type is an integer type.
      Parameters:
      type - The type to test (may be null).
      Returns:
      true if type is the primitive of wrapper class of Long, Integer, Short or Byte.
    • getBitCount

      public static int getBitCount(Class<?> type)
      Returns the number of bits used by number of the specified type.
      Parameters:
      type - The type (may be null).
      Returns:
      The number of bits, or 0 if unknow.
    • primitiveToWrapper

      public static Class<?> primitiveToWrapper(Class<?> type)
      Changes a primitive class to its wrapper (e.g. int to Integer). If the specified class is not a primitive type, then it is returned unchanged.
      Parameters:
      type - The primitive type (may be null).
      Returns:
      The type as a wrapper.
    • wrapperToPrimitive

      public static Class<?> wrapperToPrimitive(Class<?> type)
      Changes a wrapper class to its primitive (e.g. Integer to int). If the specified class is not a wrapper type, then it is returned unchanged.
      Parameters:
      type - The wrapper type (may be null).
      Returns:
      The type as a primitive.
    • getEnumConstant

      public static byte getEnumConstant(Class<?> type)
      Returns one of DOUBLE, FLOAT, LONG, INTEGER, SHORT, BYTE, CHARACTER, BOOLEAN or OTHER constants for the given type. This is a commodity for usage in switch statememnts.
      Parameters:
      type - A type (usually either a primitive type or its wrapper).
      Returns:
      The constant for the given type, or OTHER if unknow.
    • valueOf

      public static <T> T valueOf(Class<T> type, String value) throws IllegalArgumentException, NumberFormatException
      Converts the specified string into a value object. The value object can be an instance of Double, Float, Long, Integer, Short, Byte, Boolean, Character or String according the specified type. This method is intentionnaly restricted to primitive types, with the addition of String which can be though as an identity operation. Other types like File are not the purpose of this method.
      Type Parameters:
      T - The requested type.
      Parameters:
      type - The requested type.
      value - the value to parse.
      Returns:
      The value object, or null if value was null.
      Throws:
      IllegalArgumentException - if type is not a recognized type.
      NumberFormatException - if type is a subclass of Number and the string value is not parseable as a number of the specified type.
    • getShortName

      public static String getShortName(Class<?> classe)
      Returns a short class name for the specified class. This method will omit the package name. For example, it will return "String" instead of "java.lang.String" for a String object. It will also name array according Java language usage, for example "double[]" instead of "[D".
      Parameters:
      classe - The object class (may be null).
      Returns:
      A short class name for the specified object.
    • getShortClassName

      public static String getShortClassName(Object object)
      Returns a short class name for the specified object. This method will omit the package name. For example, it will return "String" instead of "java.lang.String" for a String object.
      Parameters:
      object - The object (may be null).
      Returns:
      A short class name for the specified object.