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;
}
}