gpt4 book ai didi

java - 如何使用java代理为java中的一个类文件生成多个公共(public)类

转载 作者:太空宇宙 更新时间:2023-11-04 11:45:55 25 4
gpt4 key购买 nike

我正在使用 java 代理基于 java 中的一个输入类文件为两个公共(public)类生成字节码。

现在我已经在 ClassFileTransformer 子类的转换函数中获得了两个字节数组,其中包含生成类的字节代码。如何直接将它们加载到 JVM 中而不将它们保存到磁盘文件中?

代码如下所示

public byte[] transform(ClassLoader loader, String className, Class classBeingRedefined, 
ProtectionDomain protectionDomain, byte[] classfileBuffer)
throws IllegalClassFormatException {
byte[] classOne = generateEhancedClass(className, classFileBuffer, loader);
byte[] classTwo = generateShadowClass(className, classFileBuffer,loader);

// TODO load both classOne and classTwo into loader

}

最佳答案

没有技巧就不行。当您有可用的ClassLoader时,您可以直接调用defineClass方法。然而,这确实需要反射,并且在 Java 9 中如果不显式导出 java.lang 包就不再可能。

关于java - 如何使用java代理为java中的一个类文件生成多个公共(public)类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42357874/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com