Package com.sun.jna.internal
Class ReflectionUtils
- java.lang.Object
-
- com.sun.jna.internal.ReflectionUtils
-
public class ReflectionUtils extends java.lang.Object
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 Constructor Description ReflectionUtils()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static java.lang.Object
getMethodHandle(java.lang.reflect.Method method)
Retrieve the method handle, that can be used to invoke the provided method.static java.lang.Object
invokeDefaultMethod(java.lang.Object target, java.lang.Object methodHandle, java.lang.Object... args)
Invokes a default method reflectively.static boolean
isDefault(java.lang.reflect.Method method)
Check if the supplied method object represents a default method.
-
-
-
Method Detail
-
isDefault
public static boolean isDefault(java.lang.reflect.Method method)
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
method
is a default method
-
getMethodHandle
public static java.lang.Object getMethodHandle(java.lang.reflect.Method method) throws java.lang.Exception
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:
java.lang.Exception
-
invokeDefaultMethod
public static java.lang.Object invokeDefaultMethod(java.lang.Object target, java.lang.Object methodHandle, java.lang.Object... args) throws java.lang.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:
java.lang.Throwable
-
-