美文网首页
动态编译Javassist 示例

动态编译Javassist 示例

作者: Navyble | 来源:发表于2019-08-20 17:04 被阅读0次

ddsffsd

public class JavassistDemo {

    public static void main(String[] args) throws CannotCompileException, IllegalAccessException, InstantiationException, NoSuchMethodException, InvocationTargetException {

        //初始化Javassist的类池
        ClassPool classPool = ClassPool.getDefault();

        //创建一个HelloWorld类
        CtClass ctClass = classPool.makeClass("HelloWorld");

        //添加一个test方法,会打印Hello World,直接传入方法的字符串
        CtMethod ctMethod = CtNewMethod.make("" +
                "public static void test(){" +
                "    System.out.println(\"Hello World\");" +
                "}",ctClass);

        ctClass.addMethod(ctMethod);

        //生成类
        Class aClass = ctClass.toClass();

        //通过反射调用这个类的实例
        Object object = aClass.newInstance();
        Method method = aClass.getDeclaredMethod("test",null);
        method.invoke(object,null);
    }
}

相关文章

网友评论

      本文标题:动态编译Javassist 示例

      本文链接:https://www.haomeiwen.com/subject/hvopsctx.html