Class ClassUtils

java.lang.Object
com.gigaspaces.internal.utils.ClassUtils

public abstract class ClassUtils extends Object
Miscellaneous class utility methods. Mainly for internal use within the framework; consider Jakarta's Commons Lang for a more comprehensive suite of utilities.
Author:
kimchy
  • Field Details

  • Constructor Details

    • ClassUtils

      public ClassUtils()
  • Method Details

    • getDefaultClassLoader

      public static ClassLoader getDefaultClassLoader()
      Return a default ClassLoader to use (never null). Returns the thread context ClassLoader, if available. The ClassLoader that loaded the ClassUtils class will be used as fallback.

      Call this method if you intend to use the thread context ClassLoader in a scenario where you absolutely need a non-null ClassLoader reference: for example, for class path resource loading (but not necessarily for Class.forName, which accepts a null ClassLoader reference as well).

      See Also:
    • isPresent

      public static boolean isPresent(String className)
      Return whether the Class identified by the supplied name is present and can be loaded. Will return false if either the class or one of its dependencies is not present or cannot be loaded.
    • forName

      public static Class forName(String name) throws ClassNotFoundException
      Replacement for Class.forName() that also returns Class instances for primitives (like "int") and array class names (like "String[]").

      Always uses the default class loader: that is, preferably the thread context class loader, or the ClassLoader that loaded the ClassUtils class as fallback.

      Parameters:
      name - the name of the Class
      Returns:
      Class instance for the supplied name
      Throws:
      ClassNotFoundException
      See Also:
    • forName

      public static Class forName(String name, ClassLoader classLoader) throws ClassNotFoundException
      Replacement for Class.forName() that also returns Class instances for primitives (like "int") and array class names (like "String[]").
      Parameters:
      name - the name of the Class
      classLoader - the class loader to use
      Returns:
      Class instance for the supplied name
      Throws:
      ClassNotFoundException
      See Also:
    • resolvePrimitiveClassName

      public static Class resolvePrimitiveClassName(String name)
      Resolve the given class name as primitive class, if appropriate.
      Parameters:
      name - the name of the potentially primitive class
      Returns:
      the primitive class, or null if the name does not denote a primitive class
    • getShortName

      public static String getShortName(String className)
      Get the class name without the qualified package name.
      Parameters:
      className - the className to get the short name for
      Returns:
      the class name of the class without the package name
      Throws:
      IllegalArgumentException - if the className is empty
    • getShortName

      public static String getShortName(Class clazz)
      Get the class name without the qualified package name.
      Parameters:
      clazz - the class to get the short name for
      Returns:
      the class name of the class without the package name
    • getShortNameAsProperty

      public static String getShortNameAsProperty(Class clazz)
      Return the short string name of a Java class in decapitalized JavaBeans property format.
      Parameters:
      clazz - the class
      Returns:
      the short name rendered in a standard JavaBeans property format
      See Also:
    • getQualifiedName

      public static String getQualifiedName(Class clazz)
      Return the qualified name of the given class: usually simply the class name, but component type class name + "[]" for arrays.
      Parameters:
      clazz - the class
      Returns:
      the qualified name of the class
    • getQualifiedMethodName

      public static String getQualifiedMethodName(Method method)
      Return the qualified name of the given method, consisting of fully qualified interface/class name + "." + method name.
      Parameters:
      method - the method
      Returns:
      the qualified name of the method
    • hasMethod

      public static boolean hasMethod(Class clazz, String methodName, Class[] paramTypes)
      Determine whether the given class has a method with the given signature.

      Essentially translates NoSuchMethodException to "false".

      Parameters:
      clazz - the clazz to analyze
      methodName - the name of the method
      paramTypes - the parameter types of the method
      See Also:
    • getMethodIfAvailable

      public static Method getMethodIfAvailable(Class clazz, String methodName, Class[] paramTypes)
      Determine whether the given class has a method with the given signature, and return it if available (else return null).

      Essentially translates NoSuchMethodException to null.

      Parameters:
      clazz - the clazz to analyze
      methodName - the name of the method
      paramTypes - the parameter types of the method
      Returns:
      the method, or null if not found
      See Also:
    • getMethodCountForName

      public static int getMethodCountForName(Class clazz, String methodName)
      Return the number of methods with a given name (with any argument types), for the given class and/or its superclasses. Includes non-public methods.
      Parameters:
      clazz - the clazz to check
      methodName - the name of the method
      Returns:
      the number of methods with the given name
    • hasAtLeastOneMethodWithName

      public static boolean hasAtLeastOneMethodWithName(Class clazz, String methodName)
      Does the given class and/or its superclasses at least have one or more methods (with any argument types)? Includes non-public methods.
      Parameters:
      clazz - the clazz to check
      methodName - the name of the method
      Returns:
      whether there is at least one method with the given name
    • getStaticMethod

      public static Method getStaticMethod(Class clazz, String methodName, Class[] args)
      Return a static method of a class.
      Parameters:
      methodName - the static method name
      clazz - the class which defines the method
      args - the parameter types to the method
      Returns:
      the static method, or null if no static method was found
      Throws:
      IllegalArgumentException - if the method name is blank or the clazz is null
    • isPrimitiveWrapper

      public static boolean isPrimitiveWrapper(Class clazz)
      Check if the given class represents a primitive wrapper, i.e. Boolean, Byte, Character, Short, Integer, Long, Float, or Double.
    • isPrimitiveOrWrapper

      public static boolean isPrimitiveOrWrapper(Class clazz)
      Check if the given class represents a primitive (i.e. boolean, byte, char, short, int, long, float, or double) or a primitive wrapper (i.e. Boolean, Byte, Character, Short, Integer, Long, Float, or Double).
    • isPrimitiveArray

      public static boolean isPrimitiveArray(Class clazz)
      Check if the given class represents an array of primitives, i.e. boolean, byte, char, short, int, long, float, or double.
    • isPrimitiveWrapperArray

      public static boolean isPrimitiveWrapperArray(Class clazz)
      Check if the given class represents an array of primitive wrappers, i.e. Boolean, Byte, Character, Short, Integer, Long, Float, or Double.
    • isAssignable

      public static boolean isAssignable(Class targetType, Class valueType)
      Determine if the given target type is assignable from the given value type, assuming setting by reflection. Considers primitive wrapper classes as assignable to the corresponding primitive types.
      Parameters:
      targetType - the target type
      valueType - the value type that should be assigned to the target type
      Returns:
      if the target type is assignable from the value type
    • isAssignableValue

      public static boolean isAssignableValue(Class type, Object value)
      Determine if the given type is assignable from the given value, assuming setting by reflection. Considers primitive wrapper classes as assignable to the corresponding primitive types.
      Parameters:
      type - the target type
      value - the value that should be assigned to the type
      Returns:
      if the type is assignable from the value
    • addResourcePathToPackagePath

      public static String addResourcePathToPackagePath(Class clazz, String resourceName)
      Return a path suitable for use with ClassLoader.getResource (also suitable for use with Class.getResource by prepending a slash ('/') to the return value. Built by taking the package of the specified class file, converting all dots ('.') to slashes ('/'), adding a trailing slash if necessary, and concatenating the specified resource name to this.
      As such, this function may be used to build a path suitable for loading a resource file that is in the same package as a class file, although ClassPathResource is usually even more convenient.
      Parameters:
      clazz - the Class whose package will be used as the base
      resourceName - the resource name to append. A leading slash is optional.
      Returns:
      the built-up resource path
      See Also:
    • classPackageAsResourcePath

      public static String classPackageAsResourcePath(Class clazz)
      Given an input class object, return a string which consists of the class's package name as a pathname, i.e., all dots ('.') are replaced by slashes ('/'). Neither a leading nor trailing slash is added. The result could be concatenated with a slash and the name of a resource, and fed directly to ClassLoader.getResource(). For it to be fed to Class.getResource, a leading slash would also have to be prepended to the return value.
      Parameters:
      clazz - the input class. A null value or the default (empty) package will result in an empty string ("") being returned.
      Returns:
      a path which represents the package name
      See Also:
    • getAllInterfaces

      public static Class[] getAllInterfaces(Object object)
      Return all interfaces that the given object implements as array, including ones implemented by superclasses.
      Parameters:
      object - the object to analyze for interfaces
      Returns:
      all interfaces that the given object implements as array
    • getAllInterfacesForClass

      public static Class[] getAllInterfacesForClass(Class clazz)
      Return all interfaces that the given class implements as array, including ones implemented by superclasses.

      If the class itself is an interface, it gets returned as sole interface.

      Parameters:
      clazz - the class to analyze for interfaces
      Returns:
      all interfaces that the given object implements as array
    • getAllInterfacesAsSet

      public static Set<Class> getAllInterfacesAsSet(Object object)
      Return all interfaces that the given object implements as List, including ones implemented by superclasses.
      Parameters:
      object - the object to analyze for interfaces
      Returns:
      all interfaces that the given object implements as List
    • getAllInterfacesForClassAsSet

      public static Set<Class> getAllInterfacesForClassAsSet(Class clazz)
      Return all interfaces that the given class implements as Set, including ones implemented by superclasses.

      If the class itself is an interface, it gets returned as sole interface.

      Parameters:
      clazz - the class to analyze for interfaces
      Returns:
      all interfaces that the given object implements as Set
    • getClass

      public static Class getClass(Object obj)
      Returns:
      the class of desired object or null if the obj is null
    • getPackage

      public static String getPackage(String className)
      Returns:
      the extracted package name from supplied class name, if className without package returns an empty String.
    • getTypeDisplayName

      public static String getTypeDisplayName(String typeName)