类 ClassUtils
- 从以下版本开始:
- 1.1 // * @see TypeUtils
- 作者:
- Juergen Hoeller, Keith Donald, Rob Harrop, Sam Brannen
- 另请参阅:
-
字段概要
字段 -
构造器概要
构造器 -
方法概要
修饰符和类型方法说明static 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 StringclassNamesToString(Class... classes) Build a String that consists of the names of the classes/interfaces in the given array.static StringclassNamesToString(Collection<Class> classes) Build a String that consists of the names of the classes/interfaces in the given collection.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 StringconvertClassNameToResourcePath(String className) Convert a "."static StringconvertResourcePathToClassName(String resourcePath) Convert a "/"-based resource path to a "."static Class<?>createCompositeInterface(Class<?>[] interfaces, ClassLoader classLoader) Create a composite interface Class for the given interfaces, implementing the given interfaces in one single Class.static Class<?>已过时。static Class<?>forName(String name, ClassLoader classLoader) Replacement forClass.forName()that also returns Class instances for primitives (e.g."static Class[]getAllInterfaces(Object instance) Return all interfaces that the given instance implements as array, including ones implemented by superclasses.getAllInterfacesAsSet(Object instance) Return all interfaces that the given instance implements as Set, 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.static Class<?>[]getAllInterfacesForClass(Class<?> clazz, ClassLoader classLoader) 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.getAllInterfacesForClassAsSet(Class clazz, ClassLoader classLoader) Return all interfaces that the given class implements as Set, including ones implemented by superclasses.static StringgetClassFileName(Class<?> clazz) Determine the name of the class file, relative to the containing package: e.g.static <T> Constructor<T>getConstructorIfAvailable(Class<T> clazz, Class<?>... paramTypes) Determine whether the given class has a public constructor with the given signature, and return it if available (else returnnull).static ClassLoaderReturn the default ClassLoader to use: typically the thread context ClassLoader, if available; the ClassLoader that loaded the ClassUtils class will be used as fallback.static StringgetDescriptiveType(Object value) 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.static ObjectgetFieldValueByName(String fieldName, Object o) 根据对象属性名字,获取属性值,动态获取。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 MethodgetMostSpecificMethod(Method method, Class<?> targetClass) 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.static StringgetPackageName(Class<?> clazz) Determine the name of the package of the given class: e.g.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 uncapitalized JavaBeans property format.static MethodgetStaticMethod(Class<?> clazz, String methodName, Class<?>... args) Return a public static method of a class.static Class<?>getUserClass(Class<?> clazz) 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.static Class<?>getUserClass(Object instance) 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.static booleanhasAtLeastOneMethodWithName(Class<?> clazz, String methodName) Does the given class or one of its superclasses at least have one or more methods with the supplied name (with any argument types)?static booleanhasConstructor(Class<?> clazz, Class<?>... paramTypes) Determine whether the given class has a public constructor with the given signature.static booleanDetermine whether the given class has a method with the given signature.static booleanisAssignable(Class<?> lhsType, Class<?> rhsType) Check if the right-hand side type may be assigned to the left-hand side 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 booleanisCacheSafe(Class<?> clazz, ClassLoader classLoader) 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.static boolean已过时。as of Spring 2.5, in favor ofisPresent(String, ClassLoader)static booleanisPresent(String className, ClassLoader classLoader) Determine 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. boolean, byte, char, short, int, long, float, or double.static booleanisPrimitiveOrWrapper(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.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 booleanisVisible(Class<?> clazz, ClassLoader classLoader) Check whether the given class is visible in the given ClassLoader.static booleanmatchesTypeName(Class<?> clazz, String typeName) Check whether the given class matches the user-specified type name.static ClassLoaderoverrideThreadContextClassLoader(ClassLoader classLoaderToUse) 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.static Class<?>resolveClassName(String className, ClassLoader classLoader) Resolve the given class name into a Class instance.static Class<?>Resolve the given class name as primitive class, if appropriate, according to the JVM's naming rules for primitive classes.static Class<?>resolvePrimitiveIfNecessary(Class<?> clazz) Resolve the given class if it is a primitive class, returning the corresponding primitive wrapper type instead.
-
字段详细资料
-
构造器详细资料
-
ClassUtils
public ClassUtils()
-
-
方法详细资料
-
getDefaultClassLoader
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.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).- 返回:
- the default ClassLoader (never
null) - 另请参阅:
-
overrideThreadContextClassLoader
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- 返回:
- the original thread context ClassLoader, or
nullif not overridden
-
forName
已过时。as of Spring 3.0, in favor of specifying a ClassLoader explicitly: seeforName(String, ClassLoader)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.
- 参数:
name- the name of the Class- 返回:
- Class instance for the supplied name
- 抛出:
ClassNotFoundException- if the class was not foundLinkageError- if the class file could not be loaded- 另请参阅:
-
forName
public static Class<?> forName(String name, ClassLoader classLoader) throws ClassNotFoundException, LinkageError Replacement forClass.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 ClassclassLoader- the class loader to use (may benull, which indicates the default class loader)- 返回:
- Class instance for the supplied name
- 抛出:
ClassNotFoundException- if the class was not foundLinkageError- if the class file could not be loaded- 另请参阅:
-
resolveClassName
public static Class<?> resolveClassName(String className, ClassLoader classLoader) throws IllegalArgumentException 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
forNamemethod with the same arguments, with the only difference being the exceptions thrown in case of class loading failure.- 参数:
className- the name of the ClassclassLoader- the class loader to use (may benull, which indicates the default class loader)- 返回:
- Class instance for the supplied name
- 抛出:
IllegalArgumentException- if the class name was not resolvable (that is, the class could not be found or the class file could not be loaded)- 另请参阅:
-
resolvePrimitiveClassName
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- 返回:
- the primitive class, or
nullif the name does not denote a primitive class or primitive array class
-
isPresent
已过时。as of Spring 2.5, in favor ofisPresent(String, ClassLoader)Determine 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.- 参数:
className- the name of the class to check- 返回:
- whether the specified class is present
-
isPresent
Determine 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.- 参数:
className- the name of the class to checkclassLoader- the class loader to use (may benull, which indicates the default class loader)- 返回:
- whether the specified class is present
-
getUserClass
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- 返回:
- the user-defined class
-
getUserClass
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- 返回:
- the user-defined class
-
isCacheSafe
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 analyzeclassLoader- the ClassLoader to potentially cache metadata in
-
getShortName
Get the class name without the qualified package name.- 参数:
className- the className to get the short name for- 返回:
- the class name of the class without the package name
- 抛出:
IllegalArgumentException- if the className is empty
-
getShortName
Get the class name without the qualified package name.- 参数:
clazz- the class to get the short name for- 返回:
- the class name of the class without the package name
-
getShortNameAsProperty
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- 返回:
- the short name rendered in a standard JavaBeans property format
- 另请参阅:
-
getClassFileName
Determine the name of the class file, relative to the containing package: e.g. "String.class"- 参数:
clazz- the class- 返回:
- the file name of the ".class" file
-
getPackageName
Determine the name of the package of the given class: e.g. "java.lang" for thejava.lang.Stringclass.- 参数:
clazz- the class- 返回:
- the package name, or the empty String if the class is defined in the default package
-
getQualifiedName
Return the qualified name of the given class: usually simply the class name, but component type class name + "[]" for arrays.- 参数:
clazz- the class- 返回:
- the qualified name of the class
-
getQualifiedMethodName
Return the qualified name of the given method, consisting of fully qualified interface/class name + "." + method name.- 参数:
method- the method- 返回:
- the qualified name of the method
-
getDescriptiveType
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- 返回:
- the qualified name of the class
-
matchesTypeName
Check whether the given class matches the user-specified type name.- 参数:
clazz- the class to checktypeName- the type name to match
-
hasConstructor
Determine whether the given class has a public constructor with the given signature.Essentially translates
NoSuchMethodExceptionto "false".- 参数:
clazz- the clazz to analyzeparamTypes- the parameter types of the method- 返回:
- whether the class has a corresponding constructor
- 另请参阅:
-
getConstructorIfAvailable
Determine whether the given class has a public constructor with the given signature, and return it if available (else returnnull).Essentially translates
NoSuchMethodExceptiontonull.- 参数:
clazz- the clazz to analyzeparamTypes- the parameter types of the method- 返回:
- the constructor, or
nullif not found - 另请参阅:
-
hasMethod
Determine whether the given class has a method with the given signature.Essentially translates
NoSuchMethodExceptionto "false".- 参数:
clazz- the clazz to analyzemethodName- the name of the methodparamTypes- the parameter types of the method- 返回:
- whether the class has a corresponding method
- 另请参阅:
-
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 returnnull).Essentially translates
NoSuchMethodExceptiontonull.- 参数:
clazz- the clazz to analyzemethodName- the name of the methodparamTypes- the parameter types of the method- 返回:
- the method, or
nullif not found - 另请参阅:
-
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.- 参数:
clazz- the clazz to checkmethodName- the name of the method- 返回:
- the number of methods with the given name
-
hasAtLeastOneMethodWithName
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 checkmethodName- the name of the method- 返回:
- whether there is at least one method with the given name
-
getMostSpecificMethod
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. E.g. the method may beIFoo.bar()and the target class may beDefaultFoo. In this case, the method may beDefaultFoo.bar(). This enables attributes on that method to be found.NOTE: In contrast to , this method does not resolve Java 5 bridge methods automatically. Call 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 interfacetargetClass- the target class for the current invocation. May benullor may not even implement the method.- 返回:
- the specific target method, or the original method if the
targetClassdoesn't implement it or isnull
-
getStaticMethod
Return a public static method of a class.- 参数:
methodName- the static method nameclazz- the class which defines the methodargs- the parameter types to the method- 返回:
- the static method, or
nullif no static method was found - 抛出:
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.- 参数:
clazz- the class to check- 返回:
- whether the given class is a primitive wrapper class
-
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).- 参数:
clazz- the class to check- 返回:
- whether the given class is a primitive or primitive wrapper class
-
isPrimitiveArray
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- 返回:
- whether the given class is a primitive array class
-
isPrimitiveWrapperArray
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- 返回:
- whether the given class is a primitive wrapper array class
-
resolvePrimitiveIfNecessary
Resolve the given class if it is a primitive class, returning the corresponding primitive wrapper type instead.- 参数:
clazz- the class to check- 返回:
- the original class, or a primitive wrapper for the original primitive type
-
isAssignable
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 typerhsType- the value type that should be assigned to the target type- 返回:
- if the target type is assignable from the value type // * @see TypeUtils#isAssignable
-
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.- 参数:
type- the target typevalue- the value that should be assigned to the type- 返回:
- if the type is assignable from the value
-
convertResourcePathToClassName
Convert a "/"-based resource path to a "."-based fully qualified class name.- 参数:
resourcePath- the resource path pointing to a class- 返回:
- the corresponding fully qualified class name
-
convertClassNameToResourcePath
Convert a "."-based fully qualified class name to a "/"-based resource path.- 参数:
className- the fully qualified class name- 返回:
- the corresponding resource path, pointing to the class
-
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, although is usually even more convenient.- 参数:
clazz- the Class whose package will be used as the baseresourceName- the resource name to append. A leading slash is optional.- 返回:
- the built-up resource path
- 另请参阅:
-
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 toClassLoader.getResource(). For it to be fed toClass.getResourceinstead, a leading slash would also have to be prepended to the returned value.- 参数:
clazz- the input class. Anullvalue or the default (empty) package will result in an empty string ("") being returned.- 返回:
- a path which represents the package name
- 另请参阅:
-
classNamesToString
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 benull)- 返回:
- a String of form "[com.foo.Bar, com.foo.Baz]"
- 另请参阅:
-
classNamesToString
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 benull)- 返回:
- a String of form "[com.foo.Bar, com.foo.Baz]"
- 另请参阅:
-
getAllInterfaces
Return all interfaces that the given instance implements as array, including ones implemented by superclasses.- 参数:
instance- the instance to analyze for interfaces- 返回:
- all interfaces that the given instance 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.
- 参数:
clazz- the class to analyze for interfaces- 返回:
- 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.
- 参数:
clazz- the class to analyze for interfacesclassLoader- the ClassLoader that the interfaces need to be visible in (may benullwhen accepting all declared interfaces)- 返回:
- all interfaces that the given object implements as array
-
getAllInterfacesAsSet
Return all interfaces that the given instance implements as Set, including ones implemented by superclasses.- 参数:
instance- the instance to analyze for interfaces- 返回:
- all interfaces that the given instance implements as Set
-
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.
- 参数:
clazz- the class to analyze for interfaces- 返回:
- all interfaces that the given object implements as Set
-
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.
- 参数:
clazz- the class to analyze for interfacesclassLoader- the ClassLoader that the interfaces need to be visible in (may benullwhen accepting all declared interfaces)- 返回:
- all interfaces that the given object implements as Set
-
createCompositeInterface
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 mergeclassLoader- the ClassLoader to create the composite Class in- 返回:
- the merged interface as Class
- 另请参阅:
-
isVisible
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 benull, in which case this method will always returntrue)
-
getFieldValueByName
根据对象属性名字,获取属性值,动态获取。- 参数:
fieldName- 属性名字o- 对象实例- 返回:
-
forName(String, ClassLoader)