java - 将数组作为参数放入 java 字节码中的函数

标签 java arrays function bytecode jasmin

我正在尝试使用 Jasmin 字节码将数组传递到函数中。它生成了一个正确的类,但当我尝试运行它时出现错误:

java.lang.VerifyError: (类:test4,方法:主签名:([Ljava/lang/String;)V) 寄存器 1 包含错误类型

这里可能存在什么问题? 提前感谢您的帮助!

我的字节码:

.class public input_code
.super java/lang/Object

.method private static func([Ljava/lang/String;)V
.limit stack 99
.limit locals 99

return
.end method

.method public static main([Ljava/lang/String;)V
.limit stack 99
.limit locals 99

ldc 10
anewarray java/lang/String
astore 1
aload 1
ldc 9
ldc "t"
aastore
iload 1
invokestatic input_code/func([Ljava/lang/String;)V
return
.end method

java类:

public class input_code {
    private static void func(String[] var0) {
    }

    public static void main(String[] var0) {
        String[] var1 = new String[10];
        var1[9] = "t";
        func(var1);
    }
}

最佳答案

我的错在这里。我的代码生成器有一个错误(在visitExpIdentifier中)

ldc "t"
aastore
iload 1 << should be aload

关于java - 将数组作为参数放入 java 字节码中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61171393/

相关文章:

java - 在哪里、何时以及如何将 DTO 转换为实体/从实体转换

java - 将字符串数组转换为 Map

python - Numpy、掩蔽和 sklearn 聚类

python - 检查Python中函数的参数

C++ 将用户定义的函数传递给另一个函数

c++ - 成员函数的decltype

java - 如何确定使用lambda实现泛型FunctionalInterface的Bean的类型参数?

java - 如何比较 Type 的实例是否相等

java - 读取二维数组并转置

java - 如何替换矩阵中的零?