|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
由于这些智能化家电的市场需求没有预期的高,Sun放弃了该项计划。就在Oak几近失败之时,随着互联网的发展,Sun看到了Oak在计算机网络上的广阔应用前景,于是改造了Oak,
在我们编写代码的时分,经常会有如许的情况:一部分代码是能够依据另外一部分代码依照某种特定的形式变更而来的;偶然,跟着那一部分被依附的代码产生变更,依附的代码不能不随着修正;偶然,如许的代码会跟着项目标促进,不止一次的呈现。很典范的一个例子就是,当必要本人完成数据会见层时,一般每一个实体类会对应一个DAO(数据会见对象)类,并且一样平常来说DAO类的代码编写是很机器的。这时候,我们就必要利用“代码天生”来进步我们的开辟效力和进步代码的可保护性。
Java有良多种办法能够完成“代码天生”,好比,间接利用打印语句大概利用模板引擎。但比拟较而言,利用CodeModel会使代码更天真也更简单保护。CodeModel的官网除Javadoc没有供应很好的进修文档,以是我们在项目中利用时也是不休地探索。因而,本文既是一篇CodeModel的先容文章,也是我们对CodeModel利用的履历总结。本文将依照一样平常的进修编程言语的思绪并分离示例代码向读者伴侣们先容CodelModel的利用办法。但愿能对读者伴侣们有所帮助。
CodeModel简介
CodeModel是用于天生Java代码的Java库,它供应了一种经由过程Java程序来天生Java程序的办法。
CodeModel项目是JAXB的子项目。JAXB(JavaArchitectureforXMLBinding)是一项能够依据XMLSchema发生Java类的手艺,它供应了将XML实例文档反向天生Java对象树的办法,并能将Java对象树的内容从头写到XML实例文档。JAXB是JDK的构成部分。JAXBRI(ReferenceImplementation)即schemacompiler能够将XML的schema文件映照为响应的Java元素。
CodeModel的利用办法
假如往浏览JCodeModel的API文档,JCodeModel类是我们第一个要往打仗的。JCodeModel类是天生Java代码的根。一般我们依照自上而下的按次天生所必要的Java代码。好比起首创立一个类JDefinedClass,然后再经由过程类天生办法、办法体和办法体内的代码……顺次而下。
一个CodeModel的典范使用以下:
清单1.CodeModel的典范使用- JCodeModel
- cm=newJCodeModel();
- //经由过程构建cm树来天生Java代码
- cm._class(...);
- ...
- //自上而下地天生类、办法等
- cm.build(newFile("."));
复制代码 在CodeModel中除JCodeModel类,几个经常使用的类有JDefinedClass、JMethod、JBlock、JFieldVar、JVar、JType、JExpr等。
JDefinedClass类是CodeModel来界说类的,它供应了类本身的创立、承继、完成,和类成员变量、成员办法的创立办法等
JMethod类是Java的办法类,它能够创立办法体,那末就有了JBlock类
JBlock类是我们常常要用到的类,它供应了十分多的办法:部分变量的声明、变量赋值、天生各类把持语句、挪用其他办法、设置办法的前往值等
JFieldVar类用来界说类的成员变量,它能够对成员变量举行声明、赋值等
JVar类用来界说变量,供应了变量的基础操纵如声明、赋值、初始化等
JType类用来界说Java中的各类数据范例
JExpr类表达式的工场类,它供应了TRUE和FALSE两个常量值,和天生表达式的各类办法和表达式的赋值等
为了便利前面的代码演示,如今这里构建好cm树和dc类,CodeModel会在以后项目标src文件夹->dw包下天生名为example的Java类。
清单2.构建cm树和dc类- FiledestDir=newFile((newFile("src"));
- JCodeModelcm=newJCodeModel();//实例化CodeModel
- JDefinedClassdc=cm._class("dw.example");//创立example类
复制代码 变量声明与赋值
变量范例
Java的变量范例包含基础数据范例和援用数据范例。
JCodeModel类中界说了几个常量来映照Java的基础数据范例。
JCodeModel的成员常量BOOLEAN、BYTE、CHAR、SHORT、INT、LONG、FLOAT和DOUBLE涵盖了Java所有的基础数据范例(boolean、byte、char、short、int、long、float、double),和NULL、VOID等。能够经由过程cm直接失掉。
关于援用范例,能够经由过程JCodeModel类的parseType办法来失掉。在parseType办法的参数中指定要援用的范例,经由过程范例名来猎取对象。
清单3.猎取援用变量范例- JTypetype=cm.parseType
- ("String");
- JTypetype1=cm.parseType("myType");
复制代码 以后即可以利用type、type1来界说变量的范例。
当地变量和成员变量
Java的变量能够分为当地变量(同样成为部分变量)和成员变量(同样成为实例变量)。
关于当地变量,可使用JBlock类中的decl办法对当地变量举行界说和初始化。当地变量是JVar范例。JBlock类供应了三个重载的decl办法,分离是:
decl(intmods,JTypetype,Stringname,JExpressioninit)
decl(JTypetype,Stringname)
decl(JTypetype,Stringname,JExpressioninit)
<p>
先说优点,首先和C,C++这些语言比起来,java很简单,去掉指针的java,非常好理解,自动垃圾回收机制也很好,自从JDK1.5推出以后,性能上又有了很大提高。 |
|