It was impossible to reliably proxy work in open fields - if someone accesses the field directly, then there is no easy way to intercept this call and (for example) initialize the containing object, if it is a proxy.
If access to the field is unavailable, synthetic getter methods can be created on the proxy object to intercept method calls and perform any required βoff-screenβ work.
Cowan source share