美文网首页
动态编译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