Можно ли определить, является ли класс прокси ( динамический , cglib или в противном случае )?
Пусть классы A
и B
реализуют общий интерфейс I
. Тогда мне нужно определить подпрограмму classEquals
подписи
public boolean classEquals(Class<? extends I> a, Class<? extends I> b);
так, что он оценивается в true только если a.equals(b)
или Proxy(a).equals(b)
, где Proxy(a)
обозначает динамический прокси типа A
(dynamic, cglib или другое).
С помощью @Jigar Joshi
это выглядит так:
public boolean classEquals(Class a, Class b) {
if (Proxy.isProxyClass(a)) {
return classEquals(a.getSuperclass(), b);
}
return a.equals(b);
}
Проблема заключается в том, что он не обнаруживает, например, CGLIB прокси.