Class NarcissusReflectionDriver
- java.lang.Object
-
- nonapi.io.github.classgraph.reflection.ReflectionDriver
-
- nonapi.io.github.classgraph.reflection.NarcissusReflectionDriver
-
class NarcissusReflectionDriver extends ReflectionDriver
Narcissus reflection driver (uses the Narcissus library, if it is available, which allows access to non-public fields and methods, circumventing encapsulation and visibility controls via JNI).
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class nonapi.io.github.classgraph.reflection.ReflectionDriver
ReflectionDriver.ClassMemberCache
-
-
Field Summary
Fields Modifier and Type Field Description private java.lang.reflect.Method
findClass
private java.lang.reflect.Method
getDeclaredConstructors
private java.lang.reflect.Method
getDeclaredFields
private java.lang.reflect.Method
getDeclaredMethods
private java.lang.reflect.Method
getField
private java.lang.reflect.Method
getStaticField
private java.lang.reflect.Method
invokeMethod
private java.lang.reflect.Method
invokeStaticMethod
private java.lang.Class<?>
narcissusClass
private java.lang.reflect.Method
setField
private java.lang.reflect.Method
setStaticField
-
Constructor Summary
Constructors Constructor Description NarcissusReflectionDriver()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description (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
isAccessible(java.lang.Object instance, java.lang.reflect.AccessibleObject obj)
Check whether a field or method is accessible.boolean
makeAccessible(java.lang.Object instance, java.lang.reflect.AccessibleObject accessibleObject)
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.-
Methods inherited from class nonapi.io.github.classgraph.reflection.ReflectionDriver
findField, findInstanceField, findInstanceMethod, findMethod, findStaticField, findStaticMethod
-
-
-
-
Field Detail
-
narcissusClass
private final java.lang.Class<?> narcissusClass
-
getDeclaredMethods
private final java.lang.reflect.Method getDeclaredMethods
-
findClass
private final java.lang.reflect.Method findClass
-
getDeclaredConstructors
private final java.lang.reflect.Method getDeclaredConstructors
-
getDeclaredFields
private final java.lang.reflect.Method getDeclaredFields
-
getField
private final java.lang.reflect.Method getField
-
setField
private final java.lang.reflect.Method setField
-
getStaticField
private final java.lang.reflect.Method getStaticField
-
setStaticField
private final java.lang.reflect.Method setStaticField
-
invokeMethod
private final java.lang.reflect.Method invokeMethod
-
invokeStaticMethod
private final java.lang.reflect.Method invokeStaticMethod
-
-
Method Detail
-
isAccessible
public boolean isAccessible(java.lang.Object instance, java.lang.reflect.AccessibleObject obj)
Description copied from class:ReflectionDriver
Check whether a field or method is accessible.N.B. this is overridden in Narcissus driver to just return true, since everything is accessible to JNI.
- Overrides:
isAccessible
in classReflectionDriver
- Parameters:
instance
- the object instance, or null if static.obj
- the field or method.- Returns:
- true if accessible.
-
makeAccessible
public boolean makeAccessible(java.lang.Object instance, java.lang.reflect.AccessibleObject accessibleObject)
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.accessibleObject
- 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
-
-