Class Classes


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

      • DOUBLE

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

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

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

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

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

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

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

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

        public static final byte OTHER
        Constants to be used in switch statements.
        See Also:
        Constant Field Values
    • Method Detail

      • 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 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.