Смысл динамического прокси в том, что вас не заботятся о фактическом классе возвращаемого прокси. Вы просто заботитесь о том, что это реализует все желаемые и указанные интерфейсы.
Javadocs для newProxyInstance
государство:
Возвращает:
Экземпляр прокси с указанным обработчиком вызова прокси -класса, который определяется указанным загрузчиком класса и реализует указанные интерфейсы
Так, newProxyInstance
вернул экземпляр com.sun.proxy.$Proxy0
(Что бы это ни было, нам все равно), но это также удостоверилось, что это MyServelet
. Анкет Вы должны быть в состоянии разыграть это MyServelet
без ClassCastException
, потому что newProxyInstance
создал класс для реализации этого интерфейса, и вы указали, что он должен пройти в new Class[]{MyServelet.class}
.
Для кастинга типа не удалось, дженерики Java должны были сделать вывод, что T
является MyServelet
, нет MyServeletImplementation
. Анкет Возможно, когда ты позвонил instrument
, ты сделал это так:
MyServelet proxy = YourClass.instrument(new MyServeletImplementation());
Так что актерский состав MyServelet
что должно быть успешным, а не MyServeletImplementation
, который должен потерпеть неудачу.