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

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

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

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

Ответы [ 2 ]

9 голосов
/ 29 апреля 2010

Здесь - описание реализации агента

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

«Java-агенты» были бы очевидным решением.

...