クラスがプロキシ(動的、cglibなど)であるかどうかを検出することは可能ですか?
クラスAをB作成し、共通のインターフェースを実装しましょうI。classEquals次に、署名のルーチンを定義する必要があります
public boolean classEquals(Class<? extends I> a, Class<? extends I> b);
またはの場合にのみtrueと評価されるようになります。ここで、はタイプ(dynamic、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プロキシを検出しないことです。