Я не думаю, что вы можете изменить загруженный класс. Вы можете прокси-сервер и, таким образом, изменить поведение, но это не изменит загруженный класс, и у вас должна быть возможность вставить свою реализацию в правильную позицию.
Это одна из причин того, что сеттеры иногда / часто лучше, чем вызов new
в вашем коде; это дало бы возможность внедрить фиктивный объект (или прокси) вместо реализации времени выполнения.
Я, например, очень рад, что это невозможно (или не должно быть без изменений в JVM), поскольку это было бы огромным нарушением безопасности.
Возможно, вы могли бы добиться аналогичного эффекта, используя специально созданный загрузчик классов, который распознает запрошенный класс и возвращает что-то другое. Хотя это несчастный случай, ожидающий.