Package com.sun.jna.internal
Class ReflectionUtils
java.lang.Object
com.sun.jna.internal.ReflectionUtils
Helper class to invoke default method reflectively.
This class is intented to be used only be JNA itself.
This implementation is inspired by: Correct Reflective Access to Interface Default Methods in Java 8, 9, 10
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic ObjectgetMethodHandle(Method method) Retrieve the method handle, that can be used to invoke the provided method.static ObjectinvokeDefaultMethod(Object target, Object methodHandle, Object... args) Invokes a default method reflectively.static booleanCheck if the supplied method object represents a default method.
-
Constructor Details
-
ReflectionUtils
public ReflectionUtils()
-
-
Method Details
-
isDefault
Check if the supplied method object represents a default method.This is the reflective equivalent of
method.isDefault().- Parameters:
method-- Returns:
- true if JVM supports default methods and
methodis a default method
-
getMethodHandle
Retrieve the method handle, that can be used to invoke the provided method. It is only intended to be used to call default methods on interfaces.- Parameters:
method-- Returns:
- method handle that can be used to invoke the supplied method
- Throws:
Exception
-
invokeDefaultMethod
public static Object invokeDefaultMethod(Object target, Object methodHandle, Object... args) throws Throwable Invokes a default method reflectively. The method must be called with the method handle for a default method on an interfaces.- Parameters:
target- object to invoke the supplied method handle onmethodHandle- retrieved viagetMethodHandle(java.lang.reflect.Method)args-- Returns:
- result of the invokation
- Throws:
Throwable
-