MethodHandles.Lookup
创建封装,以根据不同的条件查找MethodHandles
MethodHandles.lookup()
获取到的MethodHandles.Lookup
在调用findSpecial和unreflectSpecial
时会出现权限不够问题,抛出"no private access for invokespecial"异常,因此针对JDK8及JDK9+分别封装lookup方法。See: Description
Interface | Description |
---|---|
LookupFactory |
MethodHandles.Lookup 方法工厂,用于创建MethodHandles.Lookup 对象MethodHandles.Lookup 是一个方法句柄查找对象,用于在指定类中查找符合给定方法名称、方法类型的方法句柄。 |
Class | Description |
---|---|
ConstructorLookupFactory |
jdk8中如果直接调用
MethodHandles.lookup() 获取到的MethodHandles.Lookup 在调用findSpecial和unreflectSpecial时会出现权限不够问题,抛出"no private access for invokespecial"异常 所以通过反射创建MethodHandles.Lookup解决该问题。 |
LookupUtil |
MethodHandles.Lookup 工具MethodHandles.Lookup 是一个方法句柄查找对象,用于在指定类中查找符合给定方法名称、方法类型的方法句柄。 |
MethodLookupFactory |
jdk11中直接调用MethodHandles.lookup()获取到的MethodHandles.Lookup只能对接口类型才会权限获取方法的方法句柄MethodHandle。
|
MethodHandles.Lookup
创建封装,以根据不同的条件查找MethodHandles
jdk8中如果直接调用MethodHandles.lookup()
获取到的MethodHandles.Lookup
在调用findSpecial和unreflectSpecial
时会出现权限不够问题,抛出"no private access for invokespecial"异常,因此针对JDK8及JDK9+分别封装lookup方法。
参考:https://blog.csdn.net/u013202238/article/details/108687086
Copyright © 2025. All rights reserved.