Package com.gigaspaces.internal.utils
Class ClassUtils
java.lang.Object
com.gigaspaces.internal.utils.ClassUtils
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 Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic StringaddResourcePathToPackagePath(Class clazz, String resourceName) Return a path suitable for use withClassLoader.getResource(also suitable for use withClass.getResourceby prepending a slash ('/') to the return value.static StringclassPackageAsResourcePath(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 ('/').static ClassReplacement forClass.forName()that also returns Class instances for primitives (like "int") and array class names (like "String[]").static ClassforName(String name, ClassLoader classLoader) Replacement forClass.forName()that also returns Class instances for primitives (like "int") and array class names (like "String[]").static Class[]getAllInterfaces(Object object) Return all interfaces that the given object implements as array, including ones implemented by superclasses.getAllInterfacesAsSet(Object object) Return all interfaces that the given object implements as List, including ones implemented by superclasses.static Class[]getAllInterfacesForClass(Class clazz) Return all interfaces that the given class implements as array, including ones implemented by superclasses.Return all interfaces that the given class implements as Set, including ones implemented by superclasses.static Classstatic ClassLoaderReturn a default ClassLoader to use (nevernull).static intgetMethodCountForName(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.static MethodgetMethodIfAvailable(Class clazz, String methodName, Class[] paramTypes) Determine whether the given class has a method with the given signature, and return it if available (else returnnull).static StringgetPackage(String className) static StringgetQualifiedMethodName(Method method) Return the qualified name of the given method, consisting of fully qualified interface/class name + "." + method name.static StringgetQualifiedName(Class clazz) Return the qualified name of the given class: usually simply the class name, but component type class name + "[]" for arrays.static StringgetShortName(Class clazz) Get the class name without the qualified package name.static StringgetShortName(String className) Get the class name without the qualified package name.static StringgetShortNameAsProperty(Class clazz) Return the short string name of a Java class in decapitalized JavaBeans property format.static MethodgetStaticMethod(Class clazz, String methodName, Class[] args) Return a static method of a class.static StringgetTypeDisplayName(String typeName) static booleanhasAtLeastOneMethodWithName(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.static booleanDetermine whether the given class has a method with the given signature.static booleanisAssignable(Class targetType, Class valueType) Determine if the given target type is assignable from the given value type, assuming setting by reflection.static booleanisAssignableValue(Class type, Object value) Determine if the given type is assignable from the given value, assuming setting by reflection.static booleanReturn whether theClassidentified by the supplied name is present and can be loaded.static booleanisPrimitiveArray(Class clazz) Check if the given class represents an array of primitives, i.e.static booleanisPrimitiveOrWrapper(Class clazz) Check if the given class represents a primitive (i.e.static booleanisPrimitiveWrapper(Class clazz) Check if the given class represents a primitive wrapper, i.e.static booleanisPrimitiveWrapperArray(Class clazz) Check if the given class represents an array of primitive wrappers, i.e.static ClassResolve the given class name as primitive class, if appropriate.
-
Field Details
-
ARRAY_SUFFIX
Suffix for array class names- See Also:
-
-
Constructor Details
-
ClassUtils
public ClassUtils()
-
-
Method Details
-
getDefaultClassLoader
Return a default ClassLoader to use (nevernull). 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 anullClassLoader reference as well).- See Also:
-
isPresent
Return whether theClassidentified by the supplied name is present and can be loaded. Will returnfalseif either the class or one of its dependencies is not present or cannot be loaded. -
forName
Replacement forClass.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
Replacement forClass.forName()that also returns Class instances for primitives (like "int") and array class names (like "String[]").- Parameters:
name- the name of the ClassclassLoader- the class loader to use- Returns:
- Class instance for the supplied name
- Throws:
ClassNotFoundException- See Also:
-
resolvePrimitiveClassName
Resolve the given class name as primitive class, if appropriate.- Parameters:
name- the name of the potentially primitive class- Returns:
- the primitive class, or
nullif the name does not denote a primitive class
-
getShortName
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
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
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
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
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
Determine whether the given class has a method with the given signature.Essentially translates
NoSuchMethodExceptionto "false".- Parameters:
clazz- the clazz to analyzemethodName- the name of the methodparamTypes- the parameter types of the method- See Also:
-
getMethodIfAvailable
Determine whether the given class has a method with the given signature, and return it if available (else returnnull).Essentially translates
NoSuchMethodExceptiontonull.- Parameters:
clazz- the clazz to analyzemethodName- the name of the methodparamTypes- the parameter types of the method- Returns:
- the method, or
nullif not found - See Also:
-
getMethodCountForName
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 checkmethodName- the name of the method- Returns:
- the number of methods with the given name
-
hasAtLeastOneMethodWithName
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 checkmethodName- the name of the method- Returns:
- whether there is at least one method with the given name
-
getStaticMethod
Return a static method of a class.- Parameters:
methodName- the static method nameclazz- the class which defines the methodargs- the parameter types to the method- Returns:
- the static method, or
nullif no static method was found - Throws:
IllegalArgumentException- if the method name is blank or the clazz is null
-
isPrimitiveWrapper
Check if the given class represents a primitive wrapper, i.e. Boolean, Byte, Character, Short, Integer, Long, Float, or Double. -
isPrimitiveOrWrapper
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
Check if the given class represents an array of primitives, i.e. boolean, byte, char, short, int, long, float, or double. -
isPrimitiveWrapperArray
Check if the given class represents an array of primitive wrappers, i.e. Boolean, Byte, Character, Short, Integer, Long, Float, or Double. -
isAssignable
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 typevalueType- the value type that should be assigned to the target type- Returns:
- if the target type is assignable from the value type
-
isAssignableValue
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 typevalue- the value that should be assigned to the type- Returns:
- if the type is assignable from the value
-
addResourcePathToPackagePath
Return a path suitable for use withClassLoader.getResource(also suitable for use withClass.getResourceby 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, althoughClassPathResourceis usually even more convenient.- Parameters:
clazz- the Class whose package will be used as the baseresourceName- the resource name to append. A leading slash is optional.- Returns:
- the built-up resource path
- See Also:
-
classPackageAsResourcePath
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
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
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
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
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
- Returns:
- the class of desired object or
nullif the obj isnull
-
getPackage
- Returns:
- the extracted package name from supplied class name, if className without package returns an empty String.
-
getTypeDisplayName
-