-1

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

我问这个的原因是我需要将 Class 对象转换为 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 回答