java.lang.Object | |
↳ | org.springframework.util.ClassUtils |
Miscellaneous class utility methods. Mainly for internal use within the framework; consider Apache Commons Lang for a more comprehensive suite of class utilities.
Constants | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
String | ARRAY_SUFFIX | Suffix for array class names: "[]" | |||||||||
String | CGLIB_CLASS_SEPARATOR | The CGLIB class separator character "$$" | |||||||||
String | CLASS_FILE_SUFFIX | The ".class" file suffix |
Public Constructors | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Public Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Return a path suitable for use with
ClassLoader.getResource
(also suitable for use with Class.getResource by prepending a
slash ('/') to the return value). | |||||||||||
Build a String that consists of the names of the classes/interfaces
in the given array.
| |||||||||||
Build a String that consists of the names of the classes/interfaces
in the given collection.
| |||||||||||
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 ('/').
| |||||||||||
Convert a "."-based fully qualified class name to a "/"-based resource path.
| |||||||||||
Convert a "/"-based resource path to a "."-based fully qualified class name.
| |||||||||||
Create a composite interface Class for the given interfaces,
implementing the given interfaces in one single Class.
| |||||||||||
Replacement for
Class.forName() that also returns Class instances
for primitives (e.g."int") and array class names (e.g. | |||||||||||
This method is deprecated.
as of Spring 3.0, in favor of specifying a ClassLoader explicitly:
see
forName(String, ClassLoader)
| |||||||||||
Return all interfaces that the given instance implements as array,
including ones implemented by superclasses.
| |||||||||||
Return all interfaces that the given instance implements as Set,
including ones implemented by superclasses.
| |||||||||||
Return all interfaces that the given class implements as array,
including ones implemented by superclasses.
| |||||||||||
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.
| |||||||||||
Return all interfaces that the given class implements as Set,
including ones implemented by superclasses.
| |||||||||||
Determine the name of the class file, relative to the containing
package: e.g.
| |||||||||||
Determine whether the given class has a public constructor with the given signature,
and return it if available (else return
null ). | |||||||||||
Return the default ClassLoader to use: typically the thread context
ClassLoader, if available; the ClassLoader that loaded the ClassUtils
class will be used as fallback.
| |||||||||||
Return a descriptive name for the given object's type: usually simply
the class name, but component type class name + "[]" for arrays,
and an appended list of implemented interfaces for JDK proxies.
| |||||||||||
Return the number of methods with a given name (with any argument types),
for the given class and/or its superclasses.
| |||||||||||
Determine whether the given class has a method with the given signature,
and return it if available (else return
null ). | |||||||||||
Given a method, which may come from an interface, and a target class used
in the current reflective invocation, find the corresponding target method
if there is one.
| |||||||||||
Determine the name of the package of the given class:
e.g.
| |||||||||||
Return the qualified name of the given method, consisting of
fully qualified interface/class name + "." + method name.
| |||||||||||
Return the qualified name of the given class: usually simply
the class name, but component type class name + "[]" for arrays.
| |||||||||||
Get the class name without the qualified package name.
| |||||||||||
Get the class name without the qualified package name.
| |||||||||||
Return the short string name of a Java class in uncapitalized JavaBeans
property format.
| |||||||||||
Return a public static method of a class.
| |||||||||||
Return the user-defined class for the given instance: usually simply
the class of the given instance, but the original class in case of a
CGLIB-generated subclass.
| |||||||||||
Return the user-defined class for the given class: usually simply the given
class, but the original class in case of a CGLIB-generated subclass.
| |||||||||||
Does the given class or one of its superclasses at least have one or more
methods with the supplied name (with any argument types)?
Includes non-public methods.
| |||||||||||
Determine whether the given class has a public constructor with the given signature.
| |||||||||||
Determine whether the given class has a method with the given signature.
| |||||||||||
Check if the right-hand side type may be assigned to the left-hand side
type, assuming setting by reflection.
| |||||||||||
Determine if the given type is assignable from the given value,
assuming setting by reflection.
| |||||||||||
Check whether the given class is cache-safe in the given context,
i.e.
| |||||||||||
This method is deprecated.
as of Spring 2.5, in favor of
isPresent(String, ClassLoader)
| |||||||||||
Determine whether the
Class identified by the supplied name is present
and can be loaded. | |||||||||||
Check if the given class represents an array of primitives,
i.e.
| |||||||||||
Check if the given class represents a primitive (i.e.
| |||||||||||
Check if the given class represents a primitive wrapper,
i.e.
| |||||||||||
Check if the given class represents an array of primitive wrappers,
i.e.
| |||||||||||
Check whether the given class is visible in the given ClassLoader.
| |||||||||||
Check whether the given class matches the user-specified type name.
| |||||||||||
Override the thread context ClassLoader with the environment's bean ClassLoader
if necessary, i.e.
| |||||||||||
Resolve the given class name into a Class instance.
| |||||||||||
Resolve the given class name as primitive class, if appropriate,
according to the JVM's naming rules for primitive classes.
| |||||||||||
Resolve the given class if it is a primitive class,
returning the corresponding primitive wrapper type instead.
|
[Expand]
Inherited Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
![]() |
Suffix for array class names: "[]"
The CGLIB class separator character "$$"
The ".class" file suffix
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.
clazz | the Class whose package will be used as the base |
---|---|
resourceName | the resource name to append. A leading slash is optional. |
Build a String that consists of the names of the classes/interfaces in the given array.
Basically like AbstractCollection.toString()
, but stripping
the "class "/"interface " prefix before every class name.
classes | a Collection of Class objects (may be null ) |
---|
Build a String that consists of the names of the classes/interfaces in the given collection.
Basically like AbstractCollection.toString()
, but stripping
the "class "/"interface " prefix before every class name.
classes | a Collection of Class objects (may be null ) |
---|
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
instead, a leading slash would also have
to be prepended to the returned value.
clazz | the input class. A null value or the default
(empty) package will result in an empty string ("") being returned. |
---|
Convert a "."-based fully qualified class name to a "/"-based resource path.
className | the fully qualified class name |
---|
Convert a "/"-based resource path to a "."-based fully qualified class name.
resourcePath | the resource path pointing to a class |
---|
Create a composite interface Class for the given interfaces, implementing the given interfaces in one single Class.
This implementation builds a JDK proxy class for the given interfaces.
interfaces | the interfaces to merge |
---|---|
classLoader | the ClassLoader to create the composite Class in |
Replacement for Class.forName()
that also returns Class instances
for primitives (e.g."int") and array class names (e.g. "String[]").
Furthermore, it is also capable of resolving inner class names in Java source
style (e.g. "java.lang.Thread.State" instead of "java.lang.Thread$State").
name | the name of the Class |
---|---|
classLoader | the class loader to use
(may be null , which indicates the default class loader) |
ClassNotFoundException | if the class was not found |
---|---|
LinkageError | if the class file could not be loaded |
This method is deprecated.
as of Spring 3.0, in favor of specifying a ClassLoader explicitly:
see forName(String, ClassLoader)
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.
name | the name of the Class |
---|
ClassNotFoundException | if the class was not found |
---|---|
LinkageError | if the class file could not be loaded |
Return all interfaces that the given instance implements as array, including ones implemented by superclasses.
instance | the instance to analyze for interfaces |
---|
Return all interfaces that the given instance implements as Set, including ones implemented by superclasses.
instance | the instance to analyze for interfaces |
---|
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.
clazz | the class to analyze for interfaces |
---|---|
classLoader | the ClassLoader that the interfaces need to be visible in
(may be null when accepting all declared interfaces) |
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.
clazz | the class to analyze for interfaces |
---|
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.
clazz | the class to analyze for interfaces |
---|---|
classLoader | the ClassLoader that the interfaces need to be visible in
(may be null when accepting all declared interfaces) |
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.
clazz | the class to analyze for interfaces |
---|
Determine the name of the class file, relative to the containing package: e.g. "String.class"
clazz | the class |
---|
Determine whether the given class has a public constructor with the given signature,
and return it if available (else return null
).
Essentially translates NoSuchMethodException
to null
.
clazz | the clazz to analyze |
---|---|
paramTypes | the parameter types of the method |
null
if not foundReturn the default ClassLoader to use: typically 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).
null
)Return a descriptive name for the given object's type: usually simply the class name, but component type class name + "[]" for arrays, and an appended list of implemented interfaces for JDK proxies.
value | the value to introspect |
---|
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.
clazz | the clazz to check |
---|---|
methodName | the name of the method |
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
.
clazz | the clazz to analyze |
---|---|
methodName | the name of the method |
paramTypes | the parameter types of the method |
null
if not foundGiven a method, which may come from an interface, and a target class used
in the current reflective invocation, find the corresponding target method
if there is one. E.g. the method may be IFoo.bar()
and the
target class may be DefaultFoo
. In this case, the method may be
DefaultFoo.bar()
. This enables attributes on that method to be found.
NOTE: In contrast to getMostSpecificMethod(Method, Class>)
,
this method does not resolve Java 5 bridge methods automatically.
Call findBridgedMethod(Method)
if bridge method resolution is desirable (e.g. for obtaining metadata from
the original method definition).
method | the method to be invoked, which may come from an interface |
---|---|
targetClass | the target class for the current invocation.
May be null or may not even implement the method. |
targetClass
doesn't implement it or is null
Determine the name of the package of the given class:
e.g. "java.lang" for the java.lang.String
class.
clazz | the class |
---|
Return the qualified name of the given method, consisting of fully qualified interface/class name + "." + method name.
method | the method |
---|
Return the qualified name of the given class: usually simply the class name, but component type class name + "[]" for arrays.
clazz | the class |
---|
Get the class name without the qualified package name.
className | the className to get the short name for |
---|
IllegalArgumentException | if the className is empty |
---|
Get the class name without the qualified package name.
clazz | the class to get the short name for |
---|
Return the short string name of a Java class in uncapitalized JavaBeans property format. Strips the outer class name in case of an inner class.
clazz | the class |
---|
Return a public static method of a class.
clazz | the class which defines the method |
---|---|
methodName | the static method name |
args | the parameter types to the method |
null
if no static method was foundIllegalArgumentException | if the method name is blank or the clazz is null |
---|
Return the user-defined class for the given instance: usually simply the class of the given instance, but the original class in case of a CGLIB-generated subclass.
instance | the instance to check |
---|
Return the user-defined class for the given class: usually simply the given class, but the original class in case of a CGLIB-generated subclass.
clazz | the class to check |
---|
Does the given class or one of its superclasses at least have one or more methods with the supplied name (with any argument types)? Includes non-public methods.
clazz | the clazz to check |
---|---|
methodName | the name of the method |
Determine whether the given class has a public constructor with the given signature.
Essentially translates NoSuchMethodException
to "false".
clazz | the clazz to analyze |
---|---|
paramTypes | the parameter types of the method |
Determine whether the given class has a method with the given signature.
Essentially translates NoSuchMethodException
to "false".
clazz | the clazz to analyze |
---|---|
methodName | the name of the method |
paramTypes | the parameter types of the method |
Check if the right-hand side type may be assigned to the left-hand side type, assuming setting by reflection. Considers primitive wrapper classes as assignable to the corresponding primitive types.
lhsType | the target type |
---|---|
rhsType | the value type that should be assigned to the target type |
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.
type | the target type |
---|---|
value | the value that should be assigned to the type |
Check whether the given class is cache-safe in the given context, i.e. whether it is loaded by the given ClassLoader or a parent of it.
clazz | the class to analyze |
---|---|
classLoader | the ClassLoader to potentially cache metadata in |
This method is deprecated.
as of Spring 2.5, in favor of isPresent(String, ClassLoader)
Determine 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.
className | the name of the class to check |
---|
Determine 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.
className | the name of the class to check |
---|---|
classLoader | the class loader to use
(may be null , which indicates the default class loader) |
Check if the given class represents an array of primitives, i.e. boolean, byte, char, short, int, long, float, or double.
clazz | the class to check |
---|
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).
clazz | the class to check |
---|
Check if the given class represents a primitive wrapper, i.e. Boolean, Byte, Character, Short, Integer, Long, Float, or Double.
clazz | the class to check |
---|
Check if the given class represents an array of primitive wrappers, i.e. Boolean, Byte, Character, Short, Integer, Long, Float, or Double.
clazz | the class to check |
---|
Check whether the given class is visible in the given ClassLoader.
clazz | the class to check (typically an interface) |
---|---|
classLoader | the ClassLoader to check against (may be null ,
in which case this method will always return true )
|
Check whether the given class matches the user-specified type name.
clazz | the class to check |
---|---|
typeName | the type name to match |
Override the thread context ClassLoader with the environment's bean ClassLoader if necessary, i.e. if the bean ClassLoader is not equivalent to the thread context ClassLoader already.
classLoaderToUse | the actual ClassLoader to use for the thread context |
---|
null
if not overridden
Resolve the given class name into a Class instance. Supports primitives (like "int") and array class names (like "String[]").
This is effectively equivalent to the forName
method with the same arguments, with the only difference being
the exceptions thrown in case of class loading failure.
className | the name of the Class |
---|---|
classLoader | the class loader to use
(may be null , which indicates the default class loader) |
IllegalArgumentException | if the class name was not resolvable (that is, the class could not be found or the class file could not be loaded) |
---|
Resolve the given class name as primitive class, if appropriate, according to the JVM's naming rules for primitive classes.
Also supports the JVM's internal class names for primitive arrays.
Does not support the "[]" suffix notation for primitive arrays;
this is only supported by forName(String, ClassLoader)
.
name | the name of the potentially primitive class |
---|
null
if the name does not denote
a primitive class or primitive array class
Resolve the given class if it is a primitive class, returning the corresponding primitive wrapper type instead.
clazz | the class to check |
---|