【Javassist动态编程】把字符串转换代码动态执行

【Javassist动态编程】把字符串转换代码动态执行一 引入依赖 dependency groupid org javassist groupid artifactid javassist artifactid version 3 28 0 GA version dependency 二

大家好,我是讯享网,很高兴认识大家。

一、引入依赖


讯享网

 <dependency> <groupId>org.javassist</groupId> <artifactId>javassist</artifactId> <version>3.28.0-GA</version> </dependency>

讯享网

 二、核心实现代码

讯享网public class Class { public interface Past { void exe(); } @Deprecated public void slot() throws Exception { //获取默认类池 ClassPool c = ClassPool.getDefault(); //引入需要的依赖包,可以引入多个(需要全路径) c.importPackage("org.apache.commons.lang3.StringUtils"); // c.importPackage("..."); //创建一个类ClassDemo CtClass ctClass = c.makeClass("cn.sdata.entity.test"); //让该类实现序列化接口 ctClass.addInterface(c.get(Past.class.getName())); //添加需要执行的方法 CtMethod m = CtNewMethod.make( "public void exe(){ System.out.println(\"Hello World!\" + (13 + 2 * 5 / 3));\n" + " for (int i = 0; i < 10; i++) {\n" + " System.out.println(i);\n" + " } }", ctClass); //给一个类添加新的方法及该方法的具体实现 ctClass.addMethod(m); //制作一个空的类初始化程序(静态构造函数) ctClass.makeClassInitializer(); //将此类转换为java.lang.Class对象 java.lang.Class<?> t = ctClass.toClass(); Past object = (Past) t.newInstance(); //执行接口中的方法 object.exe(); } public static void main(String[] args) throws Exception { new Class().slot(); } } 

注意:代码里面有注解,可根据实际情况进行改造

小讯
上一篇 2025-01-15 10:54
下一篇 2025-01-09 21:07

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/73150.html