问题
In Java, is there a way (at runtime) to obtain the bytecode which defined a particular class?
Put another way, is there a way to obtain the byte[]
array passed to ClassLoader.defineClass(String name, byte[] b, int off, int len)
when a particular class was loaded? I see that this method is declared final
, so creating a custom ClassLoader
to intercept class definitions seems out of the question.
In the past, I have used the class's ClassLoader
to obtain the bytecode via the getResourceAsStream(String)
method, but I would prefer a more canonical solution.
回答1:
Here is a description how to implement an agent
回答2:
"Java agents" would be the obvious solution.
来源:https://stackoverflow.com/questions/2737285/is-there-a-way-to-obtain-the-bytecode-for-a-class-at-runtime