How to unwrap the original object from a dynamic proxy

MRalwasser picture MRalwasser · Dec 10, 2010 · Viewed 11.3k times · Source

what's the best approach to unwrap a dynamic proxy to retrieve the original object beneath? The dynamic proxy has been created using java.lang.reflect.Proxy.newProxyInstance()

Thank you.

Answer

iirekm picture iirekm · Dec 10, 2010

There's no good method: Proxy.getInvocationHandler(proxy) returns handler, but the problem is to extract the original object from the handler. If your handler is an anonymous class, the only way to extract original object is to use reflection and extract original from field named val$something - very ugly method. Better way is to create non-anonymous handler class with a getter, then you do:

((YourHandler)Proxy.getInvocationHandler(proxy)).getOriginalObject()