Вопросы динамического прокси Java - PullRequest
4 голосов
/ 14 апреля 2010

1. Имеет ли динамический экземпляр прокси подкласс целевого класса? В документе Java говорится, что экземпляр прокси-сервера реализует «список интерфейсов», ничего не говорится о подклассах, но в результате отладки я увидел, что экземпляр прокси-сервера унаследовал свойства целевого класса. Могу ли я исключить эти интерфейсы, реализованные целевым классом?

2.Могу ли я вызывать методы, специфичные для целевого класса, на экземпляре прокси?

3. Я думаю, что динамический прокси - это прокси для вызова методов интерфейса, а не прокси целевого класса, верно (я глубоко заражен концепцией объекта прокси hibernate)?

Ответы [ 2 ]

5 голосов
/ 14 апреля 2010

Если вы говорите о классе java.lang.reflect.Proxy: вообще не существует такого понятия, как "целевой класс".

Прокси-сервер создан , указав список интерфейсов, которые будет реализовывать прокси-объект, и обработчик вызовов, чей метод invoke() будет вызывать все вызовы методов на прокси-сервере. к. Обработчик вызова может делать с ними все что угодно, в том числе перенаправлять их в экземпляр «целевого класса», на который он ссылается.

1 голос
/ 14 апреля 2010
  1. Я думаю, вы неправильно поняли. Каждый Class объект, переданный getProxyClass () , должен быть объектом класса для интерфейса, а не конкретным классом. Так что String.class не будет действительным аргументом, но List.class будет. Как говорится, «Все объекты класса в массиве интерфейсов должны представлять интерфейсы, а не классы или примитивные типы». В результате подклассы не имеют значения.

  2. Нет (поскольку классы здесь не актуальны, только интерфейсы). Если вам нужно получить к ним доступ, добавьте интерфейс.

  3. Correct.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...