package cn.easyes.common.utils; import java.util.Arrays; import java.util.List; import java.util.Objects; /** * 类工具类 *

* Copyright © 2021 xpc1024 All Rights Reserved **/ public final class ClassUtils { /** * 代理 class 的名称 */ private static final List PROXY_CLASS_NAMES = Arrays.asList("net.sf.cglib.proxy.Factory" // cglib , "org.springframework.cglib.proxy.Factory" , "javassist.util.proxy.ProxyObject" // javassist , "org.apache.ibatis.javassist.util.proxy.ProxyObject"); private ClassUtils() { } /** * 判断是否为代理对象 * * @param clazz 传入 class 对象 * @return 如果对象class是代理 class,返回 true */ public static boolean isProxy(Class clazz) { if (clazz != null) { for (Class cls : clazz.getInterfaces()) { if (PROXY_CLASS_NAMES.contains(cls.getName())) { return true; } } } return false; } /** *

* 获取当前对象的 class *

* * @param clazz 传入 * @return 如果是代理的class,返回父 class,否则返回自身 */ public static Class getUserClass(Class clazz) { if (Objects.isNull(clazz)) { throw ExceptionUtils.eee("Class must not be null"); } return isProxy(clazz) ? clazz.getSuperclass() : clazz; } }