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.