获取在运行时生成的类的字节数

时间:2010-01-15 19:03:18

标签: java classloader

我正在使用Java框架,该框架在运行时使用自定义ClassLoader生成一些(代理)类。我想得到任何这样的类,自定义ClassLoader从loadClass(..)返回与此类对应的原始字节数组。这可能吗?我知道如果一个类作为资源存在,那么你可以使用输入流以二进制格式加载该类,但是如果在运行时生成该类,我该如何解决呢?

3 个答案:

答案 0 :(得分:3)

如果用自己的ClassLoader替换自定义ClassLoader,可以添加一些机制来自行保存原始字节。

答案 1 :(得分:2)

注册ClassFileTransformer。而不是修改字节,记录您需要的数据。

答案 2 :(得分:0)

ClassLoader中的类由defineClass()方法创建。如果您已经有自定义类加载器,则可以简单地覆盖所有defineClass()方法。对于该方法,您将传递包含类的字节的byte []。存储这些内容,您可以在以后访问它们,但需要使用它们。

有关详细信息,请参阅[defineClass()Java Documentation] [1]。

[1]:http://java.sun.com/javase/6/docs/api/java/lang/ClassLoader.html#defineClass(java.lang.String,byte [],int,int)