Javassist - 返回Object [] []的addMethod

时间:2017-08-12 21:59:31

标签: java-native-interface javassist

我的目标是在运行时在特定的.class文件中创建一个额外的方法。

返回Object [] []。

的方法

为此,我发现了一个名为Javassist的奇妙框架,它是一个字节码修饰符框架,它可以帮助您在运行时修改编译的类,以便添加更多代表新方法的字节码。

管理创建一个void方法,以及一个返回字符串的方法,但由于某种原因,我无法生成一个返回数组或矩阵的方法。

到目前为止,我一直在努力寻找创建此类方法的正确方法,并且获得了持续的CannotCompileException。

代码:

private static CtMethod generateMethod1(CtClass declaringClass)
            throws CannotCompileException {

        StringBuffer sb = new StringBuffer();
        sb.append("public ").append(Object[][].class.getName()).append(" ").append("method1").append("(){")
        .append("return new").append(Object[][].class.getName()).append("{{ 1,2 }}").append("; }");

        System.out.println(sb.toString());
        return CtMethod.make(sb.toString(), declaringClass);
    }

上面生成的方法的toString是:

public [[Ljava.lang.Object; method1(){return [[Ljava.lang.Object; {{1,2}}; }

由于错误的jni语法

可能会失败

帮助将不胜感激,谢谢先进

〜蒙特

1 个答案:

答案 0 :(得分:0)

好吧,只需用Object [] []替换Object [] []。class.getName()来解决它... 希望这对未来的其他人有所帮助。