Есть ли способ получить байт-код для класса во время выполнения?

В Java есть способ (во время выполнения) получить байт-код, который определяет определенный класс?

Иными словами, существует ли способ получить массив byte[], переданный в ClassLoader.defineClass(String name, byte[] b, int off, int len), когда был загружен определенный класс? Я вижу, что этот метод объявлен final, поэтому создание пользовательского ClassLoader для перехвата определений классов не может быть и речи.

В прошлом я использовал класс ClassLoader для получения байт-кода с помощью метода getResourceAsStream(String), но я предпочел бы более каноническое решение.

Ответы

Ответ 1

Здесь описано, как реализовать агент

Ответ 2

"Ява-агенты" станут очевидным решением.