-1

.class ファイルからオブジェクトをロードできることはわかっていますが、私の質問はそれを逆に行う方法です。Class オブジェクトを取得するために使用Class.forName("classname")しましたが、これを .class ファイルに書き戻すにはどうすればよいですか? ロードされたファイルが Serializable インターフェイスを実装していない可能性があるため、シリアライゼーション クラスはこの問題のポイントではありません。

私がこれを尋ねる理由は、クラス オブジェクトを Java ソース テキスト文字列に変換する必要があるからです。Object クラスをソースに直接変換する方法を知っている人がいれば、非常に役立つかもしれません。

4

1 に答える 1

1

関数などをクラスに追加したい場合は、使用できます。

http://www.jboss.org/javassist

例:

 clazz = fullclass name, method = "public void doxxx(){ int x =0;x++}"

private static void createMethod(String clazz,String method){
        ClassPool pool = ClassPool.getDefault();
        try {
            Class<?> class1 =  Class.forName(clazz);
            class1.getProtectionDomain().getCodeSource().getLocation();
            pool.insertClassPath(new ClassClassPath(class1));
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        CtClass pt;
        try {

            pt = pool.get(clazz);



            CtMethod m = CtNewMethod.make(method, pt);
            pt.addMethod(m);
            pt.writeFile();
            pt.toClass();

        } catch (NotFoundException e) {
            e.printStackTrace();
        } catch (CannotCompileException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
于 2012-06-14T08:18:02.607 に答える