WEB开发网
开发学院软件开发Java 基于 Eclipse 平台的代码生成技术 阅读

基于 Eclipse 平台的代码生成技术

 2010-07-02 00:00:00 来源:WEB开发网   
核心提示: 下文用三个示例来演示 JET 的功能和用法,示例 1 演示使用 JETEmitter 类生成简单的文件,基于 Eclipse 平台的代码生成技术(2),示例 2 利用 JET 中的骨架 (skeleton) 技术对模板编译后的模板执行类进行方法定制,示例 3 利用类 JMerger 与合并规则达

下文用三个示例来演示 JET 的功能和用法。示例 1 演示使用 JETEmitter 类生成简单的文件。示例 2 利用 JET 中的骨架 (skeleton) 技术对模板编译后的模板执行类进行方法定制。示例 3 利用类 JMerger 与合并规则达到自动生成代码与手工代码合并的效果。

示例 1 简单的文件生成(demo1)

1 编写模板,JET 语法与 JSP 语法很相似。下面是一个最简单的带有参数的模板文件 demo1.jet 。

清单 1. Demo1.jet

<%@jet package="demo.translated" imports="java.util.List" class="Demo1"%> 
 Hello, <%=((List)argument).get(0).toString()%>! 
 The current time is <%=new java.util.Date()%>.

模板文件一般放在插件项目的 templates 目录下,模板中的 argument 是 JET 的隐含变量,它代表用户的输入参数 , 一般是数据变量集。

模板的第一行表示生成内容的包路径为 demo.translated,模板执行类是 Demo1.java,该类 import java.util.List 。

第二行和第三行是 JET 需要生成的文件内容,使用 <% …… %> 包括代码,使用 <%= …… %> 打印表达式的值,与 JSP 类似,正确地使用 <% …… %> 标签就可以添加任何逻辑循环或结构,其内容很好理解,但 JET 生成代码中,常量字符串最终要以变量的形式存在,于是其生成内容如下:

清单 2. 生成内容

package demo.translated; 
 
 import java.util.List; 
 
 public class Demo1 
 { 
 protected static String nl; 
 public static synchronized Demo1 create(String lineSeparator) 
 { 
 nl = lineSeparator; 
 Demo1 result = new Demo1(); 
 nl = null; 
 return result; 
 } 
 
 public final String NL = nl == null ? (System.getProperties(). 
 getProperty("line.separator")) : nl; 
 protected final String TEXT_1 = "Hello, "; 
 protected final String TEXT_2 = "!" + NL + "The current time is "; 
 protected final String TEXT_3 = ". "; 
 protected final String TEXT_4 = NL; 
 
 public String generate(Object argument) 
 { 
 final StringBuffer stringBuffer = new StringBuffer(); 
 stringBuffer.append(TEXT_1); 
 stringBuffer.append(((List)argument).get(0).toString()); 
 stringBuffer.append(TEXT_2); 
 stringBuffer.append(new java.util.Date()); 
 stringBuffer.append(TEXT_3); 
 stringBuffer.append(TEXT_4); 
 return stringBuffer.toString(); 
 } 
 } 
调用 JET 执行模板生成操作的代码如下:

上一页  1 2 3 4 5 6 7  下一页

Tags:基于 Eclipse 平台

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接