Я использую Spring, в какой-то момент я хотел бы передать объект в его фактическую реализацию выполнения.
Пример:
Class MyClass extends NotMyClass {
    InterfaceA a;
    InterfaceA getA() { return a; }
    myMethod(SomeObject o) { ((ImplementationOfA) getA()).methodA(o.getProperty()); }
}
Это кричит a ClassCastException, так как a является объектом $ProxyN. Хотя в beans.xml я ввел bean, который имеет класс ImplementationOfA.
  РЕДАКТИРОВАТЬ 1
Я расширил класс, и мне нужно вызвать метод в ImplementationOfA. Поэтому я думаю, что мне нужно бросить. Метод получает параметр.
РЕДАКТИРОВАТЬ 2
Лучше сорвать целевой класс:
private T getTargetObject(Object proxy, Class targetClass) throws Exception {
    while( (AopUtils.isJdkDynamicProxy(proxy))) {
        return (T) getTargetObject(((Advised)proxy).getTargetSource().getTarget(), targetClass);
    }
    return (T) proxy; // expected to be cglib proxy then, which is simply a specialized class
}
Я знаю, что это не очень элегантно, но работает.
Все кредиты http://www.techper.net/2009/06/05/how-to-acess-target-object-behind-a-spring-proxy/ Спасибо!
