2009-04-23 3 views
10

Я понимаю, как использовать динамические прокси в Java, но я не понимаю, как виртуальная машина фактически создает динамический прокси. Он генерирует байт-код и загружает его? Или что-то другое? Благодарю.Как работает динамический прокси Java?

+1

Джеймс, вы, как гуру Java. Вы просто проверяли нас этим вопросом? – erickson

+0

Ха-ха. Я знаю язык Java, но я не настоящий эксперт в области VM. :) –

ответ

12

По крайней мере, для реализации Sun, если вы посмотрите на исходный код java.lang.reflect.Proxy вы увидите, что да, он генерирует байт-код на лету (с использованием класса sun.misc.ProxyGenerator) ,

5

Я предлагаю вам прочитать Dynamic Proxy Classes:

Метод Proxy.getProxyClass возвращает объект java.lang.Class для прокси- класса данного загрузчика классов и массив интерфейсов. Прокси-класс будет определен в указанном классе загрузчика и будет реализовывать все интерфейсы, входящие в комплект поставки . Если прокси-класс для той же перестановки интерфейсов уже определен в загрузчике класса , тогда будет возвращен существующий прокси-класс ; В противном случае прокси-сервер для этих интерфейсов будет сгенерирован динамически и определен в загрузчике классов. [курсив мой]

Смежные вопросы