JAVA中动态编译的简单使用
一、引用库
pom文件中申明如下:
<dependencies><!-- https://mvnrepository.com/artifact/junit/junit --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency><!-- https://mvnrepository.com/artifact/com.github.henryhuang/dynamiccompiler --><dependency><groupId>com.github.henryhuang</groupId><artifactId>dynamiccompiler</artifactId><version>0.1.0</version></dependency></dependencies>
二、测试代码
import com.github.henryhuang.dynamiccompiler.ClassGenerator; import org.junit.Test;import java.lang.reflect.Method;public class HelloTest {@Testpublic void test() {ClassGenerator builder = new ClassGenerator(".");try {Class<?> testclass = builder.generate("TestClass", "" +"public class TestClass{" +" public static String execute(String[] args){" +" System.out.println(\"Test!\"); " +" return args[0];" +" }" +"}");Method method = testclass.getMethod("execute", String[].class);for (int i = 0; i < 100; i++) {String[] params = {"宋柱柱" + i, "def"};Object result = method.invoke(null, (Object) params);System.out.println("result:" + result);}} catch (Exception ex) {ex.printStackTrace();}} }
三、运行结果
JAVA中动态编译的简单使用相关推荐
- 【java】深入理解Java的动态编译
文章目录 1.概述 2. 前提 3. 基本原理# 4. JDK动态编译 4.1 实现JavaFileObject 4.2 实现ClassLoader 4.3 实现JavaFileManager 4.4 ...
- Java中动态加载字节码的方法 (持续补充)
文章目录 Java中动态加载字节码的方法 1.利用 URLClassLoader 加载远程class文件 2.利用 ClassLoader#defineClass 直接加载字节码 2.1 类加载 - ...
- JAVA中一维数组的简单使用!
JAVA中一维数组的简单使用! 一.数组的概述 1.数组的常见概念: 数组名 下标(或索引) 元素 数组的长度 2. 数组本身是引用数据类型,而数组中的元素可以是任何数据类型,包括 基本数据类型和引用 ...
- Java中利用socket实现简单的服务端与客户端的通信(中级)——实现任意双向通信
本文计划采用socket实现客户端和服务端的任意双向通信,即客户端可以随时给服务端发消息,服务端也可以随时给客户端发消息,最终结果就是一个类似与QQ的聊天软件的功能. 以下代码可以直接拷贝到Eclip ...
- Java中利用socket实现简单的服务端与客户端的通信(基础级)
在上一篇文章中,简单的介绍了java中入门级的socket编程,简单的实现了客户端像服务器端发送数据,服务器端将数据接收并显示在控制台,没有涉及多线程.上一篇文章的链接:Java中利用socket实现 ...
- java中List Stream的简单使用
java中List Stream的简单使用 一,api入门案例 实体类 public class Person {private int id;private String name;private ...
- java编译时注解_简单介绍 Java 中的编译时注解
1. 前言 上一篇 主要介绍了什么是 注解 (Annotation) 以及如何读取 运行时注解 中的数据, 同时用注解实现了简单的 ORM 功能. 这次介绍另一部分: 如何读取 编译时注解 ( Ret ...
- 在Java中动态传参调用Python脚本
最近,又接触到一个奇葩的接口,基于老板不断催促赶时间的情况下,在重写java接口和复用已有的python脚本的两条路中选择了后者,但是其实后者并没有好很多,因为我是一个对python的认识仅限于其名称 ...
- Java中的编译错误和运行错误如何分辨
昨天小白作者经历了一场冷酷的考试洗礼,4.5个编译错误和运行错误的判断彻底把我整蒙圈了.相信有很多小伙伴跟我一样蒙圈,不过经过不懈的努力查找与思考,总结了自己的一些想法跟大家分享一下~~ 在解 ...
最新文章
- 为什么使用缩进来分组语句?15个为什么,帮助你更好的理解Python!
- OnsenUI 前端框架(三)
- sigmoid函数求导与自然指数
- vc++操作mysql数据库的技巧
- python如何下载库_python中如何下载库
- Matcher类:(转)
- LeetCode-Letter Combinations of a Phone Number-电话号码字母组合-DFS
- 金色装饰素材,用这个技巧创造节日的感觉,完美
- 测试用例集-8.公交卡测试用例
- Google的Flutter工具允许开发者开发跨平台应用
- morphia查询Mongo数据库通过ReadPreference主从数据库查询切换方法
- 学生的认知风格类型有哪些_《认知天性》读书笔记
- 图解设计模式:行为型模式之观察者模式
- 各种版本的python安装pyHook----解决找不到源的问题
- 中国电信5G技术无线频率
- html插入图片后在网页显示不出来
- html写出日出,有关描写日出的优美段落
- [转载]matlab中分号、冒号、逗号等常用标点符号的作用
- 在VS2010下利用vue开发团队项目
- 她力量系列一丨复旦大学黄萱菁教授:期待更多女性领会计算机科学的奥妙
热门文章
- Hibernate中hql的基本查询、条件查询、排序插叙、分页查询、投影查询
- c语言switch为什么要加break,c语言学习笔记 switch case语句为什么要加break
- 2016CCPC网络赛赛后总结——回顾与反思
- uva 10534——Wavio Sequence
- 服务器加根网线用不用修改路由器,安装设置无线路由器需要用几根网线?
- C++基类指针指向派生类(指针)
- MySQL千万数据量深分页优化
- python-3.8.0 新特性之赋值表达式
- Spring Boot教程(11) – 理解注解@ControllerAdvice
- 解决idea 中web项目无法正常显示的问题