public class ClassUtil
extends java.lang.Object
Modifier and Type | Field and Description |
---|---|
static java.lang.Class[] |
EMPTY_CLASS_ARRAY
Empty class array.
|
static java.lang.String |
METHOD_GET_PREFIX |
static java.lang.String |
METHOD_IS_PREFIX |
static java.lang.String |
METHOD_SET_PREFIX |
Constructor and Description |
---|
ClassUtil() |
Modifier and Type | Method and Description |
---|---|
static java.lang.Class<?> |
childClassOf(java.lang.Class<?> parentClass,
java.lang.Object instance)
Returns the class of the immediate subclass of the given parent class for
the given object instance; or null if such immediate subclass cannot be
uniquely identified for the given object instance.
|
static boolean |
compareDeclarations(java.lang.reflect.Method first,
java.lang.reflect.Method second)
Compares method declarations: signature and return types.
|
static boolean |
compareParameters(java.lang.Class[] first,
java.lang.Class[] second)
Compares classes, usually method or ctor parameters.
|
static boolean |
compareSignatures(java.lang.reflect.Constructor first,
java.lang.reflect.Constructor second)
Compares constructor signatures: names and parameters.
|
static boolean |
compareSignatures(java.lang.reflect.Field first,
java.lang.reflect.Field second) |
static boolean |
compareSignatures(java.lang.reflect.Method first,
java.lang.reflect.Method second)
Compares method signatures: names and parameters.
|
static java.lang.String |
convertClassNameToFileName(java.lang.Class clazz)
Resolves class file name from class name by replacing dot's with '/' separator
and adding class extension at the end.
|
static java.lang.String |
convertClassNameToFileName(java.lang.String className)
Resolves class file name from class name by replacing dot's with '/' separator.
|
static <T> java.lang.Class<T>[] |
emptyClassArray() |
static <T> java.lang.reflect.Constructor<T> |
findConstructor(java.lang.Class<T> clazz,
java.lang.Class<?>... parameterTypes)
Finds constructor with given parameter types.
|
static java.lang.reflect.Method |
findDeclaredMethod(java.lang.Class c,
java.lang.String methodName) |
static java.lang.Class |
findEnum(java.lang.Class target)
Returns
enum class or null if class is not an enum. |
static java.lang.reflect.Method |
findMethod(java.lang.Class c,
java.lang.String methodName)
Returns method from an object, matched by name.
|
static void |
forceAccess(java.lang.reflect.AccessibleObject accObject)
Suppress access check against a reflection object.
|
static java.lang.reflect.Field[] |
getAccessibleFields(java.lang.Class clazz) |
static java.lang.reflect.Field[] |
getAccessibleFields(java.lang.Class clazz,
java.lang.Class limit) |
static java.lang.reflect.Method[] |
getAccessibleMethods(java.lang.Class clazz)
Returns array of all methods that are accessible from given class.
|
static java.lang.reflect.Method[] |
getAccessibleMethods(java.lang.Class clazz,
java.lang.Class limit)
Returns array of all methods that are accessible from given class, upto limit
(usually
Object.class ). |
static java.lang.String |
getBeanPropertyGetterName(java.lang.reflect.Method method)
Returns property name from a getter method.
|
static java.lang.String |
getBeanPropertySetterName(java.lang.reflect.Method method)
Returns beans property setter name or
null if method is not a real setter. |
static java.lang.Class |
getCallerClass()
Smart variant of
getCallerClass(int) that skips all relevant Jodd calls. |
static java.lang.Class |
getCallerClass(int framesToSkip)
Emulates
Reflection.getCallerClass using standard API. |
static java.lang.Class[] |
getClasses(java.lang.Object... objects)
Returns classes from array of objects.
|
static java.lang.Class |
getComponentType(java.lang.reflect.Type type,
java.lang.Class implClass,
int index)
Returns single component type for given type and implementation.
|
static java.lang.Class |
getComponentType(java.lang.reflect.Type type,
int index)
Returns single component type.
|
static java.lang.Class[] |
getComponentTypes(java.lang.reflect.Type type) |
static java.lang.Class[] |
getComponentTypes(java.lang.reflect.Type type,
java.lang.Class implClass)
Returns all component types of the given type.
|
static java.lang.Class |
getGenericSupertype(java.lang.Class type,
int index)
Shortcut for
getComponentType(type.getGenericSuperclass()) . |
static java.lang.Class[] |
getGenericSupertypes(java.lang.Class type)
Shortcut for
getComponentTypes(type.getGenericSuperclass()) . |
static java.lang.Class |
getRawType(java.lang.reflect.Type type)
Returns raw class for given
type . |
static java.lang.Class<?> |
getRawType(java.lang.reflect.Type type,
java.lang.Class implClass)
Returns raw class for given
type when implementation class is known
and it makes difference. |
static java.lang.String |
getShortClassName(java.lang.Class clazz)
Returns short class name: packages are replaces with single letter.
|
static java.lang.String |
getShortClassName(java.lang.Class clazz,
int shortUpTo) |
static java.lang.Class[] |
getSuperclasses(java.lang.Class type)
Returns all superclasses.
|
static java.lang.reflect.Field[] |
getSupportedFields(java.lang.Class clazz) |
static java.lang.reflect.Field[] |
getSupportedFields(java.lang.Class clazz,
java.lang.Class limit) |
static java.lang.reflect.Method[] |
getSupportedMethods(java.lang.Class clazz) |
static java.lang.reflect.Method[] |
getSupportedMethods(java.lang.Class clazz,
java.lang.Class limit)
Returns a
Method array of the methods to which instances of the specified
respond except for those methods defined in the class specified by limit
or any of its superclasses. |
static boolean |
isAllAssignableFrom(java.lang.Class<?>[] typesTarget,
java.lang.Class<?>[] typesFrom)
Returns
true if all types are assignable from the other array of types. |
static boolean |
isAssignableFrom(java.lang.reflect.Member member1,
java.lang.reflect.Member member2)
Returns
true if the first member is accessible from second one. |
static boolean |
isBeanProperty(java.lang.reflect.Method method)
Returns
true if method is a bean property. |
static boolean |
isBeanPropertyGetter(java.lang.reflect.Method method)
Returns
true if method is bean getter. |
static boolean |
isBeanPropertySetter(java.lang.reflect.Method method)
Returns
true if method is bean setter. |
static boolean |
isInstanceOf(java.lang.Object object,
java.lang.Class target)
Safe version of
isInstance , returns false
if any of the arguments is null . |
static boolean |
isKotlinClass(java.lang.Class type)
Returns
true if type is a Kotlin class. |
static boolean |
isObjectMethod(java.lang.reflect.Method method)
Returns
true if method defined in Object class. |
static boolean |
isPublic(java.lang.Class c)
Returns
true if class is public. |
static boolean |
isPublic(java.lang.reflect.Member member)
Returns
true if class member is public. |
static boolean |
isPublicPublic(java.lang.reflect.Member member)
Returns
true if class member is public and if its declaring class is also public. |
static boolean |
isTypeOf(java.lang.Class<?> lookupClass,
java.lang.Class<?> targetClass)
Safe version of
isAssignableFrom method that
returns false if one of the arguments is null . |
static boolean |
isUserDefinedMethod(java.lang.reflect.Method method)
Returns
true if method is user defined and not defined in Object class. |
static java.util.jar.JarFile |
jarFileOf(java.lang.Class<?> klass)
Returns the jar file from which the given class is loaded; or null
if no such jar file can be located.
|
static <T> T |
newInstance(java.lang.Class<T> type)
Creates new instances including for common mutable classes that do not have a default constructor.
|
static <T> T |
newInstance(java.lang.Class<T> clazz,
java.lang.Object... params)
Creates new instance of given class with given optional arguments.
|
static java.lang.Object |
readAnnotationValue(java.lang.annotation.Annotation annotation,
java.lang.String name)
Reads annotation value.
|
static java.lang.Class[] |
resolveAllInterfaces(java.lang.Class type)
Resolves all interfaces of a type.
|
static java.lang.Class[] |
resolveAllSuperclasses(java.lang.Class type)
Resolves all super classes, from top (direct subclass) to down.
|
static java.lang.reflect.Type |
resolveVariable(java.lang.reflect.TypeVariable variable,
java.lang.Class implClass)
Resolves
TypeVariable with given implementation class. |
static java.lang.String |
typeToString(java.lang.reflect.Type type)
Converts
Type to a String . |
public static final java.lang.Class[] EMPTY_CLASS_ARRAY
public static final java.lang.String METHOD_GET_PREFIX
public static final java.lang.String METHOD_IS_PREFIX
public static final java.lang.String METHOD_SET_PREFIX
public static <T> java.lang.Class<T>[] emptyClassArray()
public static java.lang.reflect.Method findMethod(java.lang.Class c, java.lang.String methodName)
c
- class to examinemethodName
- Full name of the method.public static java.lang.reflect.Method findDeclaredMethod(java.lang.Class c, java.lang.String methodName)
findMethod(Class, String)
public static <T> java.lang.reflect.Constructor<T> findConstructor(java.lang.Class<T> clazz, java.lang.Class<?>... parameterTypes)
public static boolean isAllAssignableFrom(java.lang.Class<?>[] typesTarget, java.lang.Class<?>[] typesFrom)
true
if all types are assignable from the other array of types.public static java.lang.Class[] getClasses(java.lang.Object... objects)
null
values.public static boolean isTypeOf(java.lang.Class<?> lookupClass, java.lang.Class<?> targetClass)
isAssignableFrom
method that
returns false
if one of the arguments is null
.public static boolean isInstanceOf(java.lang.Object object, java.lang.Class target)
isInstance
, returns false
if any of the arguments is null
.public static java.lang.Class[] resolveAllInterfaces(java.lang.Class type)
public static java.lang.Class[] resolveAllSuperclasses(java.lang.Class type)
Object
class is not included in the list.public static java.lang.reflect.Method[] getAccessibleMethods(java.lang.Class clazz)
getAccessibleMethods(Class, Class)
public static java.lang.reflect.Method[] getAccessibleMethods(java.lang.Class clazz, java.lang.Class limit)
Object.class
). Abstract methods are ignored.public static java.lang.reflect.Field[] getAccessibleFields(java.lang.Class clazz)
public static java.lang.reflect.Field[] getAccessibleFields(java.lang.Class clazz, java.lang.Class limit)
public static java.lang.reflect.Method[] getSupportedMethods(java.lang.Class clazz)
public static java.lang.reflect.Method[] getSupportedMethods(java.lang.Class clazz, java.lang.Class limit)
Method
array of the methods to which instances of the specified
respond except for those methods defined in the class specified by limit
or any of its superclasses. Note that limit is usually used to eliminate
them methods defined by java.lang.Object
. If limit is null
then all
methods are returned.public static java.lang.reflect.Field[] getSupportedFields(java.lang.Class clazz)
public static java.lang.reflect.Field[] getSupportedFields(java.lang.Class clazz, java.lang.Class limit)
public static boolean compareDeclarations(java.lang.reflect.Method first, java.lang.reflect.Method second)
public static boolean compareSignatures(java.lang.reflect.Method first, java.lang.reflect.Method second)
public static boolean compareSignatures(java.lang.reflect.Constructor first, java.lang.reflect.Constructor second)
public static boolean compareSignatures(java.lang.reflect.Field first, java.lang.reflect.Field second)
public static boolean compareParameters(java.lang.Class[] first, java.lang.Class[] second)
public static void forceAccess(java.lang.reflect.AccessibleObject accObject)
public static boolean isPublic(java.lang.reflect.Member member)
true
if class member is public.public static boolean isPublicPublic(java.lang.reflect.Member member)
true
if class member is public and if its declaring class is also public.public static boolean isPublic(java.lang.Class c)
true
if class is public.public static <T> T newInstance(java.lang.Class<T> clazz, java.lang.Object... params) throws java.lang.InstantiationException, java.lang.IllegalAccessException, java.lang.reflect.InvocationTargetException, java.lang.NoSuchMethodException
java.lang.InstantiationException
java.lang.IllegalAccessException
java.lang.reflect.InvocationTargetException
java.lang.NoSuchMethodException
public static <T> T newInstance(java.lang.Class<T> type) throws java.lang.IllegalAccessException, java.lang.InstantiationException, java.lang.NoSuchMethodException, java.lang.reflect.InvocationTargetException
if
blocks
is faster then using a HashMap
.java.lang.IllegalAccessException
java.lang.InstantiationException
java.lang.NoSuchMethodException
java.lang.reflect.InvocationTargetException
public static boolean isAssignableFrom(java.lang.reflect.Member member1, java.lang.reflect.Member member2)
true
if the first member is accessible from second one.public static java.lang.Class[] getSuperclasses(java.lang.Class type)
public static boolean isUserDefinedMethod(java.lang.reflect.Method method)
true
if method is user defined and not defined in Object
class.public static boolean isObjectMethod(java.lang.reflect.Method method)
true
if method defined in Object
class.public static boolean isBeanProperty(java.lang.reflect.Method method)
true
if method is a bean property.public static boolean isBeanPropertyGetter(java.lang.reflect.Method method)
true
if method is bean getter.public static java.lang.String getBeanPropertyGetterName(java.lang.reflect.Method method)
null
if method is not a real getter.public static boolean isBeanPropertySetter(java.lang.reflect.Method method)
true
if method is bean setter.public static java.lang.String getBeanPropertySetterName(java.lang.reflect.Method method)
null
if method is not a real setter.public static java.lang.Class getComponentType(java.lang.reflect.Type type, int index)
null
if component type
does not exist or if index is out of bounds.public static java.lang.Class getComponentType(java.lang.reflect.Type type, java.lang.Class implClass, int index)
null
if component type
does not exist or if index is out of bounds.
public static java.lang.Class[] getComponentTypes(java.lang.reflect.Type type)
public static java.lang.Class[] getComponentTypes(java.lang.reflect.Type type, java.lang.Class implClass)
public static java.lang.Class[] getGenericSupertypes(java.lang.Class type)
getComponentTypes(type.getGenericSuperclass())
.public static java.lang.Class getGenericSupertype(java.lang.Class type, int index)
getComponentType(type.getGenericSuperclass())
.public static java.lang.Class getRawType(java.lang.reflect.Type type)
type
. Use this method with both
regular and generic types.type
- the type to converttype
getRawType(java.lang.reflect.Type, Class)
public static java.lang.Class<?> getRawType(java.lang.reflect.Type type, java.lang.Class implClass)
type
when implementation class is known
and it makes difference.public static java.lang.reflect.Type resolveVariable(java.lang.reflect.TypeVariable variable, java.lang.Class implClass)
TypeVariable
with given implementation class.public static java.lang.String typeToString(java.lang.reflect.Type type)
Type
to a String
. Supports successor interfaces:
java.lang.Class
- represents usual classjava.lang.reflect.ParameterizedType
- class with generic parameter (e.g. List
)java.lang.reflect.TypeVariable
- generic type literal (e.g. List
, T
- type variable)java.lang.reflect.WildcardType
- wildcard type (List<? extends Number>
, "? extends Number
- wildcard type)java.lang.reflect.GenericArrayType
- type for generic array (e.g. T[]
, T
- array type)public static java.lang.Object readAnnotationValue(java.lang.annotation.Annotation annotation, java.lang.String name)
null
on error
(e.g. when value name not found).public static java.lang.Class getCallerClass(int framesToSkip)
Reflection.getCallerClass
using standard API.
This implementation uses custom SecurityManager
and it is the fastest. Other implementations are:
new Throwable().getStackTrace()[callStackDepth]
Thread.currentThread().getStackTrace()[callStackDepth]
(the slowest)
In case when usage of SecurityManager
is not allowed,
this method fails back to the second implementation.
Note that original Reflection.getCallerClass
is way faster
then any emulation.
public static java.lang.Class getCallerClass()
getCallerClass(int)
that skips all relevant Jodd calls.
However, this one does not use the security manager.public static java.lang.Class findEnum(java.lang.Class target)
enum
class or null
if class is not an enum.public static java.lang.Class<?> childClassOf(java.lang.Class<?> parentClass, java.lang.Object instance)
public static java.util.jar.JarFile jarFileOf(java.lang.Class<?> klass)
public static java.lang.String convertClassNameToFileName(java.lang.Class clazz)
public static java.lang.String convertClassNameToFileName(java.lang.String className)
public static java.lang.String getShortClassName(java.lang.Class clazz)
public static java.lang.String getShortClassName(java.lang.Class clazz, int shortUpTo)
public static boolean isKotlinClass(java.lang.Class type)
true
if type is a Kotlin class.Copyright © 2003-present Jodd Team