0
我的目標是在運行時創建一個特定的.class文件內的附加方法。Javassist - addMethod返回一個對象[] []
返回Object [] []的方法。
爲此,我找到了一個叫做-javassist的神奇框架,它是一個字節碼修飾符框架,它可以幫助您在運行時修改編譯後的類,以便添加更多代表新方法的字節碼。
成功地創建一個無效的方法,並返回一個字符串,但是,出於某種原因,我無法生成返回一個數組或矩陣的方法等..
到目前爲止iv'e一直在努力尋找創建這種方法的正確方法,並且得到了一個持續的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是:
公共[[Ljava.lang.Object; method1(){return [[Ljava.lang.Object; {{1,2}}; }
可能失敗,因爲假JNI語法
幫助,將不勝感激,感謝先進
〜蒙特