基于 Eclipse 平台的代码生成技术
2010-07-02 00:00:00 来源:WEB开发网import java.util.Date;
public class CLASS {
public String s = "Mission Completed!";
private Date getCurrentDate() {
return new Date();
}
public String generate(Object argument) {
return "";
}
}
在该文件中,我们 import java.util.Date 类,声明了 String s 及声明了方法 getCurrentDate(),这些内容将被合并到对模板文件进行编译后的代码中。此外,在文件中的类名“ CLASS ”在代码执行类中会被模板文件中的代码执行类类名替换。
将 demo1.jet 文件修改为以下内容,并将文件另存为 demo2.jet 。
清单 5. demo2.jet
<%@jet package="demo.translated" imports="java.util.List" class="Demo2"
skeleton="demo.skeleton"%>
Hello, <%=((List)argument).get(0).toString()%>!
The current time is <%=getCurrentDate()%>.
<%=s%>
经 JET 编译后的模板文件代码内容如下,其中红色文字为利用骨架合并的效果。
清单 6. 模板文件代码
package demo.translated;
import java.util.Date;
import java.util.List;
public class Demo2 {
protected static String nl;
public static synchronized Demo1 create(String lineSeparator)
{
nl = lineSeparator;
Demo2 result = new Demo2();
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;
protected final String TEXT_5 = NL;
public String s = "Mission Completed!";
private Date getCurrentDate() {
return new Date();
}
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(getCurrentDate());
stringBuffer.append(TEXT_3);
stringBuffer.append(TEXT_4);
stringBuffer.append(s);
stringBuffer.append(TEXT_5);
return stringBuffer.toString();
}
}
更多精彩
赞助商链接