Some meaty documentation for dynamic proxies can be found in the javadoc for java.lang.reflect.Proxy. One detail specifically called out is how calls to a proxy instance’s equals(), hashCode() and toString() are dispatched to the invocation handler. The design subtlety turns out be important and well thought-out. To understand why, it is first important to grasp [...]