私の目標は、実行時に特定の.classファイル内に追加のメソッドを作成することです。Javassist - Object [] []を返すaddMethod
Object [] []を返すメソッドです。
私は、新しいメソッドを表すバイトコードを追加するために、実行時にコンパイルされたクラスを変更するのに役立つバイトコード修飾子フレームワークのJavassistという素晴らしいフレームワークを発見しました。
は、これまでのところiv'e ..
を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である:
パブリック[Ljava.lang.Object。 method1(){return [[Ljava.lang.Object; {{1,2}}; }
はおそらくによる偽JNI構文に
ヘルプをいただければ幸い失敗し、高度な
で感謝〜モン