Можно ли определить, является ли класс прокси (динамическим, 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.