首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

施用JET自动生成代码

2012-11-07 
使用JET自动生成代码在Eclipse的EMF里提供了一个根据模板生成代码的机制:JET。EMF就是使用JET来生成代码的。

使用JET自动生成代码

在Eclipse的EMF里提供了一个根据模板生成代码的机制:JET。EMF就是使用JET来生成代码的。JET可以根据定制的生成模板生成最终的文本(代码)。这一节大致讲一下怎么使用JET来生成代码。?

一、原理

JET的原理很简单:通过一个定义的模板,生成一个中间类,这个中间类有一个generate()方法,用来生成最终的一串字符串(也就是你想生成的代码)。generate()方法里就是使用一个StringBuffer对象,根据模板的内容来构造出一个字符串,最后返回在。?

所以我们生要明白,总共有两个东西在起作用:模板和中间类。

其实还有一个,就是用来生成中间类和执行类的后台引擎。不过从用户的角度来看,通常只能知道模板的存在。?

二、模板格式

首先介绍一下模板的格式。?

要把一个文件作为JET的模板文件,则它的文件名的后缀需要以"jet"结尾,例如:test.javajet、helloWorld.xmljet等。这里后缀的前半段可以随意,不过通常用来表示生成的内容格式,例如你要生成的是java代码,则通常是*.javajet;如果想生成xml文件内容,则格式通常是*.xmljet。?

要使用jet,首先我们就得先准备一个这样的模板。

上面讲了模板文件名字的约束,下面来讲一下模板文件的内容格式。?

1、???????文件头???

Jet文件头需要如下声明:

else{??
  • ??stringBuffer.append(TEXT_2);??
  • }??

    ?

    注意:有几个注意事项:

    1、??需要注意空格的存在,例如“hello world”和”??hello world”生成的结果不一样。

    2、??构造代码时,需要注意代码定义的完整性,以及代码与非代码片段的区分。?

    ?

    二、JET引擎?

    一般来说,我们都是在程序中使用JET去生成代码,所以当然需要有通过调用程序的方式来生成。这就要用到JET引擎。?EMF中默认提供了JET的引擎类:JETEmitter

    我们可以如下例如:

    JETEmitter emitter = new JETEmitter(templateURI);

    有了这个对象后,就可以直接调用它的方法来生成代码:

    emitter.generate(monitor, arguments);?

    这里的arguments是一个数组对象,也就是最后会传到模板中的那个argument。最后方法的返回对象是一个String。?

    有时我们会传入一些只在当前插件中才存在对象,所以需要告知JET引擎这个对象类的所在,我们需要如下使用:?

    emitter.addVariable(variableName, pluginID);?

    这样,id为pluginID的插件就会被作为依赖项加入。当然,可以加入一个或多个。

    ?

    http://liugang594.iteye.com/blog/154065

  • 热点排行