Bladeren bron

处理高版本Jdk将会移除的api方法调用.

nieqiurong 1 jaar geleden
bovenliggende
commit
2d32e05429

+ 8 - 2
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/toolkit/LambdaUtils.java

@@ -17,7 +17,12 @@ package com.baomidou.mybatisplus.core.toolkit;
 
 
 import com.baomidou.mybatisplus.core.metadata.TableInfo;
 import com.baomidou.mybatisplus.core.metadata.TableInfo;
 import com.baomidou.mybatisplus.core.metadata.TableInfoHelper;
 import com.baomidou.mybatisplus.core.metadata.TableInfoHelper;
-import com.baomidou.mybatisplus.core.toolkit.support.*;
+import com.baomidou.mybatisplus.core.toolkit.support.ColumnCache;
+import com.baomidou.mybatisplus.core.toolkit.support.IdeaProxyLambdaMeta;
+import com.baomidou.mybatisplus.core.toolkit.support.LambdaMeta;
+import com.baomidou.mybatisplus.core.toolkit.support.ReflectLambdaMeta;
+import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
+import com.baomidou.mybatisplus.core.toolkit.support.ShadowLambdaMeta;
 
 
 import java.lang.invoke.SerializedLambda;
 import java.lang.invoke.SerializedLambda;
 import java.lang.reflect.Method;
 import java.lang.reflect.Method;
@@ -55,7 +60,8 @@ public final class LambdaUtils {
         // 2. 反射读取
         // 2. 反射读取
         try {
         try {
             Method method = func.getClass().getDeclaredMethod("writeReplace");
             Method method = func.getClass().getDeclaredMethod("writeReplace");
-            return new ReflectLambdaMeta((SerializedLambda) ReflectionKit.setAccessible(method).invoke(func), func.getClass().getClassLoader());
+            method.setAccessible(true);
+            return new ReflectLambdaMeta((SerializedLambda) method.invoke(func), func.getClass().getClassLoader());
         } catch (Throwable e) {
         } catch (Throwable e) {
             // 3. 反射失败使用序列化的方式读取
             // 3. 反射失败使用序列化的方式读取
             return new ShadowLambdaMeta(com.baomidou.mybatisplus.core.toolkit.support.SerializedLambda.extract(func));
             return new ShadowLambdaMeta(com.baomidou.mybatisplus.core.toolkit.support.SerializedLambda.extract(func));

+ 5 - 2
mybatis-plus-core/src/main/java/com/baomidou/mybatisplus/core/toolkit/ReflectionKit.java

@@ -95,11 +95,12 @@ public final class ReflectionKit {
      */
      */
     public static Class<?> getSuperClassGenericType(final Class<?> clazz, final Class<?> genericIfc, final int index) {
     public static Class<?> getSuperClassGenericType(final Class<?> clazz, final Class<?> genericIfc, final int index) {
         // 这里泛型逻辑提取进行了调整,如果在Spring项目情况或者自定义了泛型提取,那就优先走这里,否则使用框架内置的进行泛型提取.
         // 这里泛型逻辑提取进行了调整,如果在Spring项目情况或者自定义了泛型提取,那就优先走这里,否则使用框架内置的进行泛型提取.
+        Class<?> userClass = ClassUtils.getUserClass(clazz);
         if (GenericTypeUtils.hasGenericTypeResolver()) {
         if (GenericTypeUtils.hasGenericTypeResolver()) {
-            Class<?>[] typeArguments = GenericTypeUtils.resolveTypeArguments(ClassUtils.getUserClass(clazz), genericIfc);
+            Class<?>[] typeArguments = GenericTypeUtils.resolveTypeArguments(userClass, genericIfc);
             return null == typeArguments ? null : typeArguments[index];
             return null == typeArguments ? null : typeArguments[index];
         }
         }
-        return (Class<?>) TypeParameterResolver.resolveClassIndexedParameter(clazz, genericIfc, index);
+        return (Class<?>) TypeParameterResolver.resolveClassIndexedParameter(userClass, genericIfc, index);
     }
     }
 
 
     /**
     /**
@@ -192,7 +193,9 @@ public final class ReflectionKit {
      * @param object 可访问的对象
      * @param object 可访问的对象
      * @param <T>    类型
      * @param <T>    类型
      * @return 返回设置后的对象
      * @return 返回设置后的对象
+     * @deprecated 3.5.4 {@link java.security.AccessController}
      */
      */
+    @Deprecated
     public static <T extends AccessibleObject> T setAccessible(T object) {
     public static <T extends AccessibleObject> T setAccessible(T object) {
         return AccessController.doPrivileged(new SetAccessibleAction<>(object));
         return AccessController.doPrivileged(new SetAccessibleAction<>(object));
     }
     }