是否可以检测一个类是否是代理(动态、cglib或其他)?
让类A
和B
实现一个通用接口I
。然后我需要定义一个classEquals
签名例程
public boolean classEquals(Class<? extends I> a, Class<? extends I> b);
这样它只有在或时才计算为真,其中表示类型的动态代理(动态、cglib 或其他)。a.equals(b)
Proxy(a).equals(b)
Proxy(a)
A
在 的帮助下@Jigar Joshi
,到目前为止是这样的:
public boolean classEquals(Class a, Class b) {
if (Proxy.isProxyClass(a)) {
return classEquals(a.getSuperclass(), b);
}
return a.equals(b);
}
问题是它没有检测到例如CGLIB代理。