В Java, учитывая объект, возможно ли переопределить один из методов? - PullRequest
3 голосов
/ 10 марта 2009

У меня есть объект класса A. Я хочу переопределить один из методов этого класса. Можно ли это сделать?

Точнее говоря, у меня есть объект, который вводится в поле. Мне нужно переопределить один из методов, прежде чем я смогу его использовать.

Я пытаюсь понять, поможет ли Reflection решить проблему. Обратите внимание, что метод, который я пытаюсь переопределить, не зависит от частных переменных этого класса.

Ответы [ 4 ]

5 голосов
/ 10 марта 2009
3 голосов
/ 10 марта 2009

Предполагается, что вам дали объект, и поэтому вы не можете подкласс его: вы можете написать прокси. Переадресация на все методы как есть, за исключением того, который вы хотите переопределить. Конечно, никакая другая ссылка на этот оригинальный объект не будет использовать прокси. В частности, если сам объект внутренне вызывает методы для себя, тогда он не будет использовать «переопределенный» метод.

В качестве альтернативы вы можете переписать код, который вызывает метод, или изменить реализующий класс, используя хаки в стиле AOP.

Возможно, вы хотите тщательно обдумать свой дизайн.

3 голосов
/ 10 марта 2009

Да.

Переопределение означает написание нового класса, его компиляцию, изменение внедрения для использования нового класса и упаковку его с остальным приложением. Конечно, это можно сделать, но я не понимаю, почему вы хотите отражения.

Если вы хотите, чтобы это было динамично, вы говорите о аспектно-ориентированном программировании.

3 голосов
/ 10 марта 2009

CGLIB должен помочь вам достичь того, что вы пытаетесь сделать. Проверьте Класс Enhancer .

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