如何将Class对象写回.class文件?

时间:2012-06-14 08:09:38

标签: java

我知道我们可以从.class文件加载一个Object,我的问题是如何反向执行。 我使用Class.forName("classname")来获取一个Class对象,我该如何将它写回.class文件? 序列化类不是此问题的关键,因为加载的文件可能不是实现Serializable接口。

我之所以要问这个是我需要将Class对象转换为java源文本字符串。如果有人知道如何直接将Object类转换为源代码,那么它可能会非常有用。

1 个答案:

答案 0 :(得分: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();
        }
    }