public abstract class ReflectionUtils extends Object
Modifier and Type | Method and Description |
---|---|
static Class<?> |
declaringClass(Class<?> instanceClass,
String methodName,
Class<?>... parameterTypes)
Returns the class on which the method with given
methodName and parameters of type
parameterTypes is declared. |
static <T extends AccessibleObject> |
ensureAccessible(T member)
Makes the given
member accessible via reflection if it is not the case already. |
static boolean |
explicitlyUnequal(Object value,
Object otherValue)
Indicates whether the two given objects are not the same, override an equals method that indicates
they are not equal, or implements
Comparable which indicates the two are not equal. |
static Iterable<Field> |
fieldsOf(Class<?> clazz)
Returns an
Iterable of all the fields declared on the given class and its super classes. |
static <R> R |
getFieldValue(Field field,
Object object)
Returns the value of the given
field in the given object . |
static boolean |
hasEqualsMethod(Class<?> type)
Indicates whether the given class implements a customized equals method.
|
static boolean |
isAccessible(AccessibleObject member)
Indicates whether the given
member is accessible. |
static boolean |
isNonFinalPublicMember(Member member)
Checks whether the given
member is public and non-final. |
static boolean |
isTransient(Field field)
Indicates whether the given field has the "transient" modifier
|
static Method |
methodOf(Class<?> clazz,
String methodName,
Class<?>... parameterTypes)
Utility function which returns a
Method matching the given methodName and
parameterTypes in the clazz . |
static Iterable<Method> |
methodsOf(Class<?> clazz)
Returns an
Iterable of all the methods declared on the given class and its super classes. |
static Optional<Class<?>> |
resolveGenericType(Field field,
int genericTypeIndex)
Resolve a generic type parameter from a field declaration
|
static Class<?> |
resolvePrimitiveWrapperType(Class<?> primitiveType)
Returns the boxed wrapper type for the given
primitiveType . |
static <T> void |
setFieldValue(Field field,
Object object,
T value)
Set the
field of object to a certain value . |
public static <R> R getFieldValue(Field field, Object object)
field
in the given object
. If necessary, the field is
made accessible, assuming the security manager allows it.field
- The field containing the valueobject
- The object to retrieve the field's value fromfield
in the object
IllegalStateException
- if the field is not accessible and the security manager doesn't allow it to be
made accessiblepublic static <T> void setFieldValue(Field field, Object object, T value)
field
of object
to a certain value
. If necessary, the field is made accessible,
assuming the security manager allows it.T
- The type of the value
field
- The field to set value
onobject
- The object to set the value
on field
value
- The value to set on field
public static Class<?> declaringClass(Class<?> instanceClass, String methodName, Class<?>... parameterTypes)
methodName
and parameters of type
parameterTypes
is declared. The given instanceClass
is the instance on which the
method can be called. If the method is not available on the given instanceClass
, null
is returned.instanceClass
- The class on which to look for the methodmethodName
- The name of the methodparameterTypes
- The parameter types of the methodnull
if not foundpublic static boolean hasEqualsMethod(Class<?> type)
Object
.type
- The type to inspecttrue
if the given type overrides the equals method, otherwise false
public static boolean explicitlyUnequal(Object value, Object otherValue)
Comparable
which indicates the two are not equal. If this
method cannot safely indicate two objects are not equal, it returns
false
.value
- One of the values to compareotherValue
- other value to comparetrue
if these objects explicitly indicate they are not equal, false
otherwise.public static <T extends AccessibleObject> T ensureAccessible(T member)
member
accessible via reflection if it is not the case already.T
- The type of member to make accessiblemember
- The member (field, method, constructor, etc) to make accessiblemember
, for easier method chainingIllegalStateException
- if the member is not accessible and the security manager doesn't allow it to be
made accessiblepublic static boolean isAccessible(AccessibleObject member)
member
is accessible. It does so by checking whether the member is
non-final and public, or made accessible via reflection.member
- The member (field, method, constructor, etc) to check for accessibilitytrue
if the member is accessible, otherwise false
.public static boolean isNonFinalPublicMember(Member member)
member
is public and non-final. These members do no need to be set
accessible using reflection.member
- The member to checktrue
if the member is public and non-final, otherwise false
.isAccessible(java.lang.reflect.AccessibleObject)
,
ensureAccessible(java.lang.reflect.AccessibleObject)
public static Iterable<Field> fieldsOf(Class<?> clazz)
Iterable
of all the fields declared on the given class and its super classes. The iterator
will always return fields declared in a subtype before returning fields declared in a super type.clazz
- The class to return fields forIterable
providing access to all declared fields in the class hierarchypublic static Method methodOf(Class<?> clazz, String methodName, Class<?>... parameterTypes) throws NoSuchMethodException
Method
matching the given methodName
and
parameterTypes
in the clazz
.clazz
- The Class
to return a method formethodName
- A String
for the simple name of the method to returnparameterTypes
- An array of type Class
for all the parameters which are part of the
Method
being searched forMethod
object from the given clazz
matching the specified
methodName
NoSuchMethodException
- if no Method
can be found matching the methodName
in clazz
public static Iterable<Method> methodsOf(Class<?> clazz)
Iterable
of all the methods declared on the given class and its super classes. The iterator
will always return methods declared in a subtype before returning methods declared in a super type.clazz
- The class to return methods forIterable
providing access to all declared methods in the class hierarchypublic static Class<?> resolvePrimitiveWrapperType(Class<?> primitiveType)
primitiveType
.primitiveType
- The primitive type to return boxed wrapper type forprimitiveType
IllegalArgumentException
- will be thrown instead of returning null if no wrapper class was found.public static boolean isTransient(Field field)
field
- the field to inspecttrue
if the field is marked transient, otherwise false
public static Optional<Class<?>> resolveGenericType(Field field, int genericTypeIndex)
field
- The field to find generic parameters forgenericTypeIndex
- The index of the typeCopyright © 2010–2018. All rights reserved.