Java BCEL代码示例,以放置;新类[]{String.Class}";在堆栈上

Java BCEL代码示例,以放置;新类[]{String.Class}";在堆栈上,java,bytecode,bcel,Java,Bytecode,Bcel,我正在寻找一个BCEL代码示例,介绍如何创建一个大小为1的数组,其中包含java.lang.Class的实例,并使用对java.lang.String.Class的引用初始化其唯一元素 换句话说,我正在寻找一个BCEL代码示例,将“newclass[]{String.Class}”放在堆栈上 谢谢。假设要创建49(Java 5)或更高版本的类文件,则所需的指令序列为: java/lang/Class java.lang.String.class 现在唯一剩下的问题是如何在BCEL中生成它

我正在寻找一个BCEL代码示例,介绍如何创建一个大小为1的数组,其中包含java.lang.Class的实例,并使用对java.lang.String.Class的引用初始化其唯一元素

换句话说,我正在寻找一个BCEL代码示例,将“newclass[]{String.Class}”放在堆栈上


谢谢。

假设要创建49(Java 5)或更高版本的类文件,则所需的指令序列为:


java/lang/Class



java.lang.String.class


现在唯一剩下的问题是如何在BCEL中生成它。根据我从中看到的,生成器代码可能如下所示:

il.append(InstructionConstants.ICONST_1);
il.append(factory.createNewArray(Type.getType(Class.class), 1));
il.append(InstructionConstants.DUP);
il.append(InstructionConstants.ICONST_0);
il.append(new LDC(constantPoolGen.addClass(Type.getType(String.class))));
il.append(InstructionConstants.AASTORE);

尽管我还没有测试过它。

谢谢,不幸的是,这抛出了:ClassGeneException:非法类型:class org.apache.bcel.generic.ObjectType似乎
factory.createConstant
无法创建
class
常量。但我也在匆忙中犯了一些其他错误;我现在已经修好了。这就是我想要的,谢谢,非常感谢。