Class StandardReflectionDriver
- java.lang.Object
-
- nonapi.io.github.classgraph.reflection.ReflectionDriver
-
- nonapi.io.github.classgraph.reflection.StandardReflectionDriver
-
class StandardReflectionDriver extends ReflectionDriver
Standard reflection driver (usesAccessibleObject.setAccessible(boolean)
to access non-public fields if necessary).
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private class
StandardReflectionDriver.PrivilegedActionInvocationHandler<T>
-
Nested classes/interfaces inherited from class nonapi.io.github.classgraph.reflection.ReflectionDriver
ReflectionDriver.ClassMemberCache
-
-
Field Summary
Fields Modifier and Type Field Description private static java.lang.Class<?>
accessControllerClass
private static java.lang.reflect.Method
accessControllerDoPrivileged
private static java.lang.Class<?>
privilegedActionClass
private static java.lang.reflect.Method
setAccessibleMethod
private static java.lang.reflect.Method
trySetAccessibleMethod
-
Constructor Summary
Constructors Constructor Description StandardReflectionDriver()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private <T> T
doPrivileged(java.util.concurrent.Callable<T> callable)
Call a method in the AccessController.doPrivileged(PrivilegedAction) context, using reflection, if possible (AccessController is deprecated in JDK 17).(package private) java.lang.Class<?>
findClass(java.lang.String className)
Find a class by name.(package private) <T> java.lang.reflect.Constructor<T>[]
getDeclaredConstructors(java.lang.Class<T> cls)
Get declared constructors for class.(package private) java.lang.reflect.Field[]
getDeclaredFields(java.lang.Class<?> cls)
Get declared fields for class.(package private) java.lang.reflect.Method[]
getDeclaredMethods(java.lang.Class<?> cls)
Get declared methods for class.(package private) java.lang.Object
getField(java.lang.Object object, java.lang.reflect.Field field)
Get the value of a non-static field, boxing the value if necessary.(package private) java.lang.Object
getStaticField(java.lang.reflect.Field field)
Get the value of a static field, boxing the value if necessary.(package private) java.lang.Object
invokeMethod(java.lang.Object object, java.lang.reflect.Method method, java.lang.Object... args)
Invoke a non-static method, boxing the result if necessary.(package private) java.lang.Object
invokeStaticMethod(java.lang.reflect.Method method, java.lang.Object... args)
Invoke a static method, boxing the result if necessary.boolean
makeAccessible(java.lang.Object instance, java.lang.reflect.AccessibleObject obj)
Make a field or method accessible.(package private) void
setField(java.lang.Object object, java.lang.reflect.Field field, java.lang.Object value)
Set the value of a non-static field, unboxing the value if necessary.(package private) void
setStaticField(java.lang.reflect.Field field, java.lang.Object value)
Set the value of a static field, unboxing the value if necessary.private static boolean
tryMakeAccessible(java.lang.reflect.AccessibleObject obj)
-
Methods inherited from class nonapi.io.github.classgraph.reflection.ReflectionDriver
findField, findInstanceField, findInstanceMethod, findMethod, findStaticField, findStaticMethod, isAccessible
-
-
-
-
Field Detail
-
setAccessibleMethod
private static java.lang.reflect.Method setAccessibleMethod
-
trySetAccessibleMethod
private static java.lang.reflect.Method trySetAccessibleMethod
-
accessControllerClass
private static java.lang.Class<?> accessControllerClass
-
privilegedActionClass
private static java.lang.Class<?> privilegedActionClass
-
accessControllerDoPrivileged
private static java.lang.reflect.Method accessControllerDoPrivileged
-
-
Method Detail
-
doPrivileged
private <T> T doPrivileged(java.util.concurrent.Callable<T> callable) throws java.lang.Throwable
Call a method in the AccessController.doPrivileged(PrivilegedAction) context, using reflection, if possible (AccessController is deprecated in JDK 17).- Throws:
java.lang.Throwable
-
tryMakeAccessible
private static boolean tryMakeAccessible(java.lang.reflect.AccessibleObject obj)
-
makeAccessible
public boolean makeAccessible(java.lang.Object instance, java.lang.reflect.AccessibleObject obj)
Description copied from class:ReflectionDriver
Make a field or method accessible.- Specified by:
makeAccessible
in classReflectionDriver
- Parameters:
instance
- the object instance, or null if static.obj
- the field or method.- Returns:
- true if successful.
-
findClass
java.lang.Class<?> findClass(java.lang.String className) throws java.lang.Exception
Description copied from class:ReflectionDriver
Find a class by name.- Specified by:
findClass
in classReflectionDriver
- Parameters:
className
- the class name- Returns:
- the class reference
- Throws:
java.lang.Exception
-
getDeclaredMethods
java.lang.reflect.Method[] getDeclaredMethods(java.lang.Class<?> cls) throws java.lang.Exception
Description copied from class:ReflectionDriver
Get declared methods for class.- Specified by:
getDeclaredMethods
in classReflectionDriver
- Parameters:
cls
- the class- Returns:
- the declared methods
- Throws:
java.lang.Exception
-
getDeclaredConstructors
<T> java.lang.reflect.Constructor<T>[] getDeclaredConstructors(java.lang.Class<T> cls) throws java.lang.Exception
Description copied from class:ReflectionDriver
Get declared constructors for class.- Specified by:
getDeclaredConstructors
in classReflectionDriver
- Type Parameters:
T
- the generic type- Parameters:
cls
- the class- Returns:
- the declared constructors
- Throws:
java.lang.Exception
-
getDeclaredFields
java.lang.reflect.Field[] getDeclaredFields(java.lang.Class<?> cls) throws java.lang.Exception
Description copied from class:ReflectionDriver
Get declared fields for class.- Specified by:
getDeclaredFields
in classReflectionDriver
- Parameters:
cls
- the class- Returns:
- the declared fields
- Throws:
java.lang.Exception
-
getField
java.lang.Object getField(java.lang.Object object, java.lang.reflect.Field field) throws java.lang.Exception
Description copied from class:ReflectionDriver
Get the value of a non-static field, boxing the value if necessary.- Specified by:
getField
in classReflectionDriver
- Parameters:
object
- the object instance to get the field value fromfield
- the non-static field- Returns:
- the value of the field
- Throws:
java.lang.Exception
-
setField
void setField(java.lang.Object object, java.lang.reflect.Field field, java.lang.Object value) throws java.lang.Exception
Description copied from class:ReflectionDriver
Set the value of a non-static field, unboxing the value if necessary.- Specified by:
setField
in classReflectionDriver
- Parameters:
object
- the object instance to get the field value fromfield
- the non-static fieldvalue
- the value to set- Throws:
java.lang.Exception
-
getStaticField
java.lang.Object getStaticField(java.lang.reflect.Field field) throws java.lang.Exception
Description copied from class:ReflectionDriver
Get the value of a static field, boxing the value if necessary.- Specified by:
getStaticField
in classReflectionDriver
- Parameters:
field
- the static field- Returns:
- the static field
- Throws:
java.lang.Exception
-
setStaticField
void setStaticField(java.lang.reflect.Field field, java.lang.Object value) throws java.lang.Exception
Description copied from class:ReflectionDriver
Set the value of a static field, unboxing the value if necessary.- Specified by:
setStaticField
in classReflectionDriver
- Parameters:
field
- the static fieldvalue
- the value to set- Throws:
java.lang.Exception
-
invokeMethod
java.lang.Object invokeMethod(java.lang.Object object, java.lang.reflect.Method method, java.lang.Object... args) throws java.lang.Exception
Description copied from class:ReflectionDriver
Invoke a non-static method, boxing the result if necessary.- Specified by:
invokeMethod
in classReflectionDriver
- Parameters:
object
- the object instance to invoke the method onmethod
- the non-static methodargs
- the method arguments (ornew Object[0]
if there are no args)- Returns:
- the return value (possibly a boxed value)
- Throws:
java.lang.Exception
-
invokeStaticMethod
java.lang.Object invokeStaticMethod(java.lang.reflect.Method method, java.lang.Object... args) throws java.lang.Exception
Description copied from class:ReflectionDriver
Invoke a static method, boxing the result if necessary.- Specified by:
invokeStaticMethod
in classReflectionDriver
- Parameters:
method
- the static methodargs
- the method arguments (ornew Object[0]
if there are no args)- Returns:
- the return value (possibly a boxed value)
- Throws:
java.lang.Exception
-
-