一、引入依赖
<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();
}
}
注意:代码里面有注解,可根据实际情况进行改造
今天的文章java字符串转set_java游戏编程小游戏代码分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/83881.html