我的目标是在运行时在特定的.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语法
可能会失败帮助将不胜感激,谢谢先进
〜蒙特
答案 0 :(得分:0)
好吧,只需用Object [] []替换Object [] []。class.getName()来解决它... 希望这对未来的其他人有所帮助。