public class ClassUtils
extends java.lang.Object
Title: ClassUtils.java
Description:
bboss workgroup
Copyright (c) 2008
| 限定符和类型 | 字段和说明 |
|---|---|
static java.lang.String |
ARRAY_SUFFIX
Suffix for array class names: "[]"
|
static java.lang.String |
CGLIB_CLASS_SEPARATOR
The CGLIB class separator character "$$"
|
static java.lang.String |
CLASS_FILE_SUFFIX
The ".class" file suffix
|
| 构造器和说明 |
|---|
ClassUtils() |
| 限定符和类型 | 方法和说明 |
|---|---|
static java.lang.String |
addResourcePathToPackagePath(java.lang.Class clazz,
java.lang.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. |
static java.lang.String |
classNamesToString(java.lang.Class[] classes)
Build a String that consists of the names of the classes/interfaces in
the given array.
|
static java.lang.String |
classNamesToString(java.util.Collection classes)
Build a String that consists of the names of the classes/interfaces in
the given collection.
|
static java.lang.String |
classPackageAsResourcePath(java.lang.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 java.lang.String |
convertClassNameToResourcePath(java.lang.String className)
Convert a "."
|
static java.lang.String |
convertResourcePathToClassName(java.lang.String resourcePath)
Convert a "/"-based resource path to a "."
|
static java.lang.Class |
createCompositeInterface(java.lang.Class[] interfaces,
java.lang.ClassLoader classLoader)
Create a composite interface Class for the given interfaces, implementing
the given interfaces in one single Class.
|
static java.lang.Class |
forName(java.lang.String name)
Replacement for
Class.forName() that also returns Class
instances for primitives (like "int") and array class names (like
"String[]"). |
static java.lang.Class |
forName(java.lang.String name,
java.lang.ClassLoader classLoader)
Replacement for
Class.forName() that also returns Class
instances for primitives (like "int") and array class names (like
"String[]"). |
static java.lang.Class |
genericParameterType(java.lang.reflect.Method method,
int posistion) |
static java.lang.Class[] |
genericParameterTypes(java.lang.reflect.Method method,
int posistion) |
static java.lang.Class |
genericType(java.lang.reflect.Field field) |
static java.lang.Class[] |
genericTypes(java.lang.reflect.Field field) |
static java.lang.Class[] |
getAllInterfaces(java.lang.Object instance)
Return all interfaces that the given instance implements as array,
including ones implemented by superclasses.
|
static java.util.Set |
getAllInterfacesAsSet(java.lang.Object instance)
Return all interfaces that the given instance implements as Set,
including ones implemented by superclasses.
|
static java.lang.Class[] |
getAllInterfacesForClass(java.lang.Class clazz)
Return all interfaces that the given class implements as array, including
ones implemented by superclasses.
|
static java.lang.Class[] |
getAllInterfacesForClass(java.lang.Class clazz,
java.lang.ClassLoader classLoader)
Return all interfaces that the given class implements as array, including
ones implemented by superclasses.
|
static java.util.Set |
getAllInterfacesForClassAsSet(java.lang.Class clazz)
Return all interfaces that the given class implements as Set, including
ones implemented by superclasses.
|
static java.util.Set |
getAllInterfacesForClassAsSet(java.lang.Class clazz,
java.lang.ClassLoader classLoader)
Return all interfaces that the given class implements as Set, including
ones implemented by superclasses.
|
static java.lang.String |
getClassFileName(java.lang.Class clazz)
Determine the name of the class file, relative to the containing package:
e.g.
|
static java.lang.reflect.Constructor |
getConstructorIfAvailable(java.lang.Class clazz,
java.lang.Class[] paramTypes)
Determine whether the given class has a constructor with the given
signature, and return it if available (else return
null). |
static java.lang.ClassLoader |
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.
|
static java.lang.String |
getDescriptiveType(java.lang.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 int |
getMethodCountForName(java.lang.Class clazz,
java.lang.String methodName)
Return the number of methods with a given name (with any argument types),
for the given class and/or its superclasses.
|
static java.lang.reflect.Method |
getMethodIfAvailable(java.lang.Class clazz,
java.lang.String methodName,
java.lang.Class... paramTypes)
Determine whether the given class has a method with the given signature,
and return it if available (else return
null). |
static java.lang.reflect.Method |
getMostSpecificMethod(java.lang.reflect.Method method,
java.lang.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 java.lang.String |
getPackageName(java.lang.Class clazz)
Determine the name of the package of the given class: e.g.
|
static java.lang.Class |
getPropertyGenericType(java.lang.reflect.Method writeMethod) |
static java.lang.Class[] |
getPropertyGenericTypes(java.lang.reflect.Method writeMethod) |
static java.lang.String |
getQualifiedMethodName(java.lang.reflect.Method method)
Return the qualified name of the given method, consisting of fully
qualified interface/class name + "." + method name.
|
static java.lang.String |
getQualifiedName(java.lang.Class clazz)
Return the qualified name of the given class: usually simply the class
name, but component type class name + "[]" for arrays.
|
static java.lang.String |
getShortName(java.lang.Class clazz)
Get the class name without the qualified package name.
|
static java.lang.String |
getShortName(java.lang.String className)
Get the class name without the qualified package name.
|
static java.lang.String |
getShortNameAsProperty(java.lang.Class clazz)
Return the short string name of a Java class in decapitalized JavaBeans
property format.
|
static java.lang.reflect.Method |
getStaticMethod(java.lang.Class clazz,
java.lang.String methodName,
java.lang.Class[] args)
Return a static method of a class.
|
static java.lang.Class |
getUserClass(java.lang.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 java.lang.Class |
getUserClass(java.lang.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 boolean |
hasAtLeastOneMethodWithName(java.lang.Class clazz,
java.lang.String methodName)
Does the given class and/or its superclasses at least have one or more
methods (with any argument types)?
|
static boolean |
hasConstructor(java.lang.Class clazz,
java.lang.Class[] paramTypes)
Determine whether the given class has a constructor with the given
signature.
|
static boolean |
hasMethod(java.lang.Class clazz,
java.lang.String methodName,
java.lang.Class... paramTypes)
Determine whether the given class has a method with the given signature.
|
static boolean |
isAssignable(java.lang.Class lhsType,
java.lang.Class rhsType)
Check if the right-hand side type may be assigned to the left-hand side
type, assuming setting by reflection.
|
static boolean |
isAssignableValue(java.lang.Class type,
java.lang.Object value)
Determine if the given type is assignable from the given value, assuming
setting by reflection.
|
static boolean |
isCacheSafe(java.lang.Class clazz,
java.lang.ClassLoader classLoader)
Check whether the given class is cache-safe in the given context, i.e.
|
static boolean |
isPresent(java.lang.String className)
已过时。
as of Bboss 2.5, in favor of
isPresent(String, ClassLoader) |
static boolean |
isPresent(java.lang.String className,
java.lang.ClassLoader classLoader)
Determine whether the
Class identified by the supplied name is
present and can be loaded. |
static boolean |
isPrimitiveArray(java.lang.Class clazz)
Check if the given class represents an array of primitives, i.e. boolean,
byte, char, short, int, long, float, or double.
|
static boolean |
isPrimitiveOrWrapper(java.lang.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 boolean |
isPrimitiveWrapper(java.lang.Class clazz)
Check if the given class represents a primitive wrapper, i.e.
|
static boolean |
isPrimitiveWrapperArray(java.lang.Class clazz)
Check if the given class represents an array of primitive wrappers, i.e.
|
static boolean |
isVisible(java.lang.Class clazz,
java.lang.ClassLoader classLoader)
Check whether the given class is visible in the given ClassLoader.
|
static java.lang.ClassLoader |
overrideThreadContextClassLoader(java.lang.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 java.lang.Class |
resolveClassName(java.lang.String className,
java.lang.ClassLoader classLoader)
Resolve the given class name into a Class instance.
|
static java.lang.Class |
resolvePrimitiveClassName(java.lang.String name)
Resolve the given class name as primitive class, if appropriate,
according to the JVM's naming rules for primitive classes.
|
public static final java.lang.String ARRAY_SUFFIX
public static final java.lang.String CGLIB_CLASS_SEPARATOR
public static final java.lang.String CLASS_FILE_SUFFIX
public static java.lang.ClassLoader getDefaultClassLoader()
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)Thread.getContextClassLoader()public static java.lang.ClassLoader overrideThreadContextClassLoader(java.lang.ClassLoader classLoaderToUse)
classLoaderToUse - the actual ClassLoader to use for the thread contextnull if
not overriddenpublic static java.lang.Class forName(java.lang.String name)
throws java.lang.ClassNotFoundException,
java.lang.LinkageError
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 Classjava.lang.ClassNotFoundException - if the class was not foundjava.lang.LinkageError - if the class file could not be loadedClass.forName(String, boolean, ClassLoader),
getDefaultClassLoader()public static java.lang.Class forName(java.lang.String name,
java.lang.ClassLoader classLoader)
throws java.lang.ClassNotFoundException,
java.lang.LinkageError
Class.forName() that also returns Class
instances for primitives (like "int") and array class names (like
"String[]").name - the name of the ClassclassLoader - the class loader to use (may be null, which
indicates the default class loader)java.lang.ClassNotFoundException - if the class was not foundjava.lang.LinkageError - if the class file could not be loadedClass.forName(String, boolean, ClassLoader)public static java.lang.Class resolveClassName(java.lang.String className,
java.lang.ClassLoader classLoader)
throws java.lang.IllegalArgumentException
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 ClassclassLoader - the class loader to use (may be null, which
indicates the default class loader)java.lang.IllegalArgumentException - if the class name was not resolvable (that is, the class
could not be found or the class file could not be loaded)forName(String, ClassLoader)public static java.lang.Class resolvePrimitiveClassName(java.lang.String name)
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(java.lang.String).
name - the name of the potentially primitive classnull if the name does not
denote a primitive class or primitive array classpublic static boolean isPresent(java.lang.String className)
isPresent(String, ClassLoader)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 checkpublic static boolean isPresent(java.lang.String className,
java.lang.ClassLoader classLoader)
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 checkclassLoader - the class loader to use (may be null, which
indicates the default class loader)public static java.lang.Class getUserClass(java.lang.Object instance)
instance - the instance to checkpublic static java.lang.Class getUserClass(java.lang.Class clazz)
clazz - the class to checkpublic static boolean isCacheSafe(java.lang.Class clazz,
java.lang.ClassLoader classLoader)
clazz - the class to analyzeclassLoader - the ClassLoader to potentially cache metadata inpublic static java.lang.String getShortName(java.lang.String className)
className - the className to get the short name forjava.lang.IllegalArgumentException - if the className is emptypublic static java.lang.String getShortName(java.lang.Class clazz)
clazz - the class to get the short name forpublic static java.lang.String getShortNameAsProperty(java.lang.Class clazz)
clazz - the classIntrospector.decapitalize(String)public static java.lang.String getClassFileName(java.lang.Class clazz)
clazz - the classpublic static java.lang.String getPackageName(java.lang.Class clazz)
java.lang.String class.clazz - the classpublic static java.lang.String getQualifiedName(java.lang.Class clazz)
clazz - the classpublic static java.lang.String getQualifiedMethodName(java.lang.reflect.Method method)
method - the methodpublic static java.lang.String getDescriptiveType(java.lang.Object value)
value - the value to introspectpublic static boolean hasConstructor(java.lang.Class clazz,
java.lang.Class[] paramTypes)
Essentially translates NoSuchMethodException to "false".
clazz - the clazz to analyzeparamTypes - the parameter types of the methodClass.getMethod(java.lang.String, java.lang.Class<?>...)public static java.lang.reflect.Constructor getConstructorIfAvailable(java.lang.Class clazz,
java.lang.Class[] paramTypes)
null).
Essentially translates NoSuchMethodException to
null.
clazz - the clazz to analyzeparamTypes - the parameter types of the methodnull if not foundClass.getConstructor(java.lang.Class<?>...)public static boolean hasMethod(java.lang.Class clazz,
java.lang.String methodName,
java.lang.Class... paramTypes)
Essentially translates NoSuchMethodException to "false".
clazz - the clazz to analyzemethodName - the name of the methodparamTypes - the parameter types of the methodClass.getMethod(java.lang.String, java.lang.Class<?>...)public static java.lang.reflect.Method getMethodIfAvailable(java.lang.Class clazz,
java.lang.String methodName,
java.lang.Class... paramTypes)
null).
Essentially translates NoSuchMethodException to
null.
clazz - the clazz to analyzemethodName - the name of the methodparamTypes - the parameter types of the methodnull if not foundClass.getMethod(java.lang.String, java.lang.Class<?>...)public static int getMethodCountForName(java.lang.Class clazz,
java.lang.String methodName)
clazz - the clazz to checkmethodName - the name of the methodpublic static boolean hasAtLeastOneMethodWithName(java.lang.Class clazz,
java.lang.String methodName)
clazz - the clazz to checkmethodName - the name of the methodpublic static java.lang.reflect.Method getMostSpecificMethod(java.lang.reflect.Method method,
java.lang.Class targetClass)
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.
this method does not resolve Java 5 bridge methods automatically.
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 be
null or may not even implement the method.targetClass doesn't implement it or is
nullpublic static java.lang.reflect.Method getStaticMethod(java.lang.Class clazz,
java.lang.String methodName,
java.lang.Class[] args)
methodName - the static method nameclazz - the class which defines the methodargs - the parameter types to the methodnull if no static method was
foundjava.lang.IllegalArgumentException - if the method name is blank or the clazz is nullpublic static boolean isPrimitiveWrapper(java.lang.Class clazz)
clazz - the class to checkpublic static boolean isPrimitiveOrWrapper(java.lang.Class clazz)
clazz - the class to checkpublic static boolean isPrimitiveArray(java.lang.Class clazz)
clazz - the class to checkpublic static boolean isPrimitiveWrapperArray(java.lang.Class clazz)
clazz - the class to checkpublic static boolean isAssignable(java.lang.Class lhsType,
java.lang.Class rhsType)
lhsType - the target typerhsType - the value type that should be assigned to the target typeTypeUtils#isAssignablepublic static boolean isAssignableValue(java.lang.Class type,
java.lang.Object value)
type - the target typevalue - the value that should be assigned to the typepublic static java.lang.String convertResourcePathToClassName(java.lang.String resourcePath)
resourcePath - the resource path pointing to a classpublic static java.lang.String convertClassNameToResourcePath(java.lang.String className)
className - the fully qualified class namepublic static java.lang.String addResourcePathToPackagePath(java.lang.Class clazz,
java.lang.String resourceName)
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 necesssary, and concatenating the specified resource
name to this. clazz - the Class whose package will be used as the baseresourceName - the resource name to append. A leading slash is optional.ClassLoader.getResource(java.lang.String),
Class.getResource(java.lang.String)public static java.lang.String classPackageAsResourcePath(java.lang.Class clazz)
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.ClassLoader.getResource(java.lang.String),
Class.getResource(java.lang.String)public static java.lang.String classNamesToString(java.lang.Class[] classes)
Basically like AbstractCollection.toString(), but stripping
the "class "/"interface " prefix before every class name.
classes - a Collection of Class objects (may be null)AbstractCollection.toString()public static java.lang.String classNamesToString(java.util.Collection classes)
Basically like AbstractCollection.toString(), but stripping
the "class "/"interface " prefix before every class name.
classes - a Collection of Class objects (may be null)AbstractCollection.toString()public static java.lang.Class[] getAllInterfaces(java.lang.Object instance)
instance - the instance to analyse for interfacespublic static java.lang.Class[] getAllInterfacesForClass(java.lang.Class clazz)
If the class itself is an interface, it gets returned as sole interface.
clazz - the class to analyse for interfacespublic static java.lang.Class[] getAllInterfacesForClass(java.lang.Class clazz,
java.lang.ClassLoader classLoader)
If the class itself is an interface, it gets returned as sole interface.
clazz - the class to analyse for interfacesclassLoader - the ClassLoader that the interfaces need to be visible in (may
be null when accepting all declared interfaces)public static java.util.Set getAllInterfacesAsSet(java.lang.Object instance)
instance - the instance to analyse for interfacespublic static java.util.Set getAllInterfacesForClassAsSet(java.lang.Class clazz)
If the class itself is an interface, it gets returned as sole interface.
clazz - the class to analyse for interfacespublic static java.util.Set getAllInterfacesForClassAsSet(java.lang.Class clazz,
java.lang.ClassLoader classLoader)
If the class itself is an interface, it gets returned as sole interface.
clazz - the class to analyse for interfacesclassLoader - the ClassLoader that the interfaces need to be visible in (may
be null when accepting all declared interfaces)public static java.lang.Class createCompositeInterface(java.lang.Class[] interfaces,
java.lang.ClassLoader classLoader)
This implementation builds a JDK proxy class for the given interfaces.
interfaces - the interfaces to mergeclassLoader - the ClassLoader to create the composite Class inProxy.getProxyClass(java.lang.ClassLoader, java.lang.Class<?>...)public static boolean isVisible(java.lang.Class clazz,
java.lang.ClassLoader 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)public static java.lang.Class genericParameterType(java.lang.reflect.Method method,
int posistion)
public static java.lang.Class genericType(java.lang.reflect.Field field)
public static java.lang.Class[] genericParameterTypes(java.lang.reflect.Method method,
int posistion)
public static java.lang.Class[] genericTypes(java.lang.reflect.Field field)
public static java.lang.Class getPropertyGenericType(java.lang.reflect.Method writeMethod)
public static java.lang.Class[] getPropertyGenericTypes(java.lang.reflect.Method writeMethod)