Я понимаю, как использовать динамические прокси в Java, но я не понимаю, как виртуальная машина фактически создает динамический прокси. Он генерирует байт-код и загружает его? Или что-то другое? Спасибо.
По крайней мере, для реализации Sun, если вы посмотрите на исходный код java.lang.reflect.Proxy, вы увидите, что да, он генерирует байт-код на лету (используя класс sun.misc.ProxyGenerator).
java.lang.reflect.Proxy
sun.misc.ProxyGenerator
Я предлагаю вам прочитать Динамические прокси-классы :
Метод Proxy.getProxyClass возвращает объект java.lang.Class для прокси класс с учетом загрузчика класса и массив интерфейсов. Прокси класс будет определен в указанном классе загрузчик и будет реализовывать все поставляемые интерфейсы. Если прокси класс для той же перестановки интерфейсов уже был определен в классе загрузчик, то существующий прокси-класс будет возвращен; в противном случае прокси класс для этих интерфейсов будет генерируется динамически и определяется в загрузчик классов. [выделено мое]