MethodHandles.Lookup 创建封装,以根据不同的条件查找MethodHandlesMethodHandles.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.