java自动生成代码的方法详解

简介: java自动生成代码的方法详解

看到这个标题,如果你以为真的可以完全自动生成,那你就太Naive啦

我这里想介绍的是,利用模板生成我们需要的代码

一、模板

首先来说说模板,常见的java模板有:FreeMarker、Velocity、Jamon、JByte等等。

不熟悉的可以百度下,其实我了解也不多,哈哈。

二、原理

其实就是利用模板,填充数据,得到我们需要的代码。即:输出=模板+数据

三、实例

实例利用FreeMarker来做的,所以你需要先导入freemarker的jar包

假设我们需要自动生成一个java bean,那么我们的模板(formBean.ftl)可能是下面这个样子的

复制代码
public class ${beanName?cap_first}Form {

<#list params as param>
private ${param.paramType} ${param.paramName};
public void set${param.paramName?cap_first}(${param.paramType} ${param.paramName}){
this.${param.paramName} = ${param.paramName};
}

public ${param.paramType} get${param.paramName?cap_first}(){
    return this.${param.paramName};
}

</#list>
}
//代码效果参考:http://www.zidongmutanji.com/zsjx/517577.html

其中cap_first的作用是使首字母大写,这些都是ftl中的方法,可以百度谷歌之

接下来上拼装数据,生成文件的Demo

复制代码
// 拼装数据
Map formBeanMap = new HashMap();
formBeanMap.put("beanName", "testBean");
List> paramsList = new ArrayList>();
for (int i = 0; i < 4; i++) {
Map tmpParamMap = new HashMap();
tmpParamMap.put("paramType", "String");
tmpParamMap.put("paramName", "param" + i);
paramsList.add(tmpParamMap);
}
formBeanMap.put("params", paramsList);

freemarker.template.Configuration config = new freemarker.template.Configuration();
config.setObjectWrapper(new DefaultObjectWrapper());
Template formBeanTemplate = config.getTemplate("formBean.ftl", "UTF-8");
//代码效果参考:http://www.zidongmutanji.com/zsjx/58657.html

Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("c:\TestBeanForm.java"), "UTF-8"));
formBeanTemplate.process(formBeanMap, out);
out.flush();
out.close();

相关文章
|
2月前
|
消息中间件 Java Kafka
在Java中实现分布式事务的常用框架和方法
总之,选择合适的分布式事务框架和方法需要综合考虑业务需求、性能、复杂度等因素。不同的框架和方法都有其特点和适用场景,需要根据具体情况进行评估和选择。同时,随着技术的不断发展,分布式事务的解决方案也在不断更新和完善,以更好地满足业务的需求。你还可以进一步深入研究和了解这些框架和方法,以便在实际应用中更好地实现分布式事务管理。
|
2月前
|
Java
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
84 9
|
2月前
|
Java
在Java中实现接口的具体代码示例
可以根据具体的需求,创建更多的类来实现这个接口,以满足不同形状的计算需求。希望这个示例对你理解在 Java 中如何实现接口有所帮助。
92 38
|
14天前
|
安全 Java 编译器
深入理解Java中synchronized三种使用方式:助您写出线程安全的代码
`synchronized` 是 Java 中的关键字,用于实现线程同步,确保多个线程互斥访问共享资源。它通过内置的监视器锁机制,防止多个线程同时执行被 `synchronized` 修饰的方法或代码块。`synchronized` 可以修饰非静态方法、静态方法和代码块,分别锁定实例对象、类对象或指定的对象。其底层原理基于 JVM 的指令和对象的监视器,JDK 1.6 后引入了偏向锁、轻量级锁等优化措施,提高了性能。
40 3
|
2月前
|
Java
java小工具util系列4:基础工具代码(Msg、PageResult、Response、常量、枚举)
java小工具util系列4:基础工具代码(Msg、PageResult、Response、常量、枚举)
58 24
|
22天前
|
前端开发 Java 测试技术
java日常开发中如何写出优雅的好维护的代码
代码可读性太差,实际是给团队后续开发中埋坑,优化在平时,没有那个团队会说我专门给你一个月来优化之前的代码,所以在日常开发中就要多注意可读性问题,不要写出几天之后自己都看不懂的代码。
57 2
|
1月前
|
Java 编译器 数据库
Java 中的注解(Annotations):代码中的 “元数据” 魔法
Java注解是代码中的“元数据”标签,不直接参与业务逻辑,但在编译或运行时提供重要信息。本文介绍了注解的基础语法、内置注解的应用场景,以及如何自定义注解和结合AOP技术实现方法执行日志记录,展示了注解在提升代码质量、简化开发流程和增强程序功能方面的强大作用。
82 5
|
1月前
|
存储 算法 Java
Java 内存管理与优化:掌控堆与栈,雕琢高效代码
Java内存管理与优化是提升程序性能的关键。掌握堆与栈的运作机制,学习如何有效管理内存资源,雕琢出更加高效的代码,是每个Java开发者必备的技能。
58 5
|
2月前
|
Java API 开发者
Java中的Lambda表达式:简洁代码的利器####
本文探讨了Java中Lambda表达式的概念、用途及其在简化代码和提高开发效率方面的显著作用。通过具体实例,展示了Lambda表达式如何在Java 8及更高版本中替代传统的匿名内部类,使代码更加简洁易读。文章还简要介绍了Lambda表达式的语法和常见用法,帮助开发者更好地理解和应用这一强大的工具。 ####
|
2月前
|
安全 Java 开发者
Java中WAIT和NOTIFY方法必须在同步块中调用的原因
在Java多线程编程中,`wait()`和`notify()`方法是实现线程间协作的关键。这两个方法必须在同步块或同步方法中调用,这一要求背后有着深刻的原因。本文将深入探讨为什么`wait()`和`notify()`方法必须在同步块中调用,以及这一机制如何确保线程安全和避免死锁。
47 4