gpt4 book ai didi

java - 将 "new Class[]{String.class}"放入堆栈的 BCEL 代码示例

转载 作者:行者123 更新时间:2023-12-01 12:25:07 26 4
gpt4 key购买 nike

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

换句话说,我正在寻找一个 BCEL 代码示例来将“new Class[]{String.class}”放入堆栈中。

谢谢。

最佳答案

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

iconst_1
anewarray java/lang/Class
dup
iconst_0
ldc java.lang.String.class
aastore

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

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);

虽然我还没有测试过。

关于java - 将 "new Class[]{String.class}"放入堆栈的 BCEL 代码示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26422815/

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