WEB开发网
开发学院软件开发Java 扩展 JDT 实现自动代码注释与格式化 阅读

扩展 JDT 实现自动代码注释与格式化

 2010-07-30 00:00:00 来源:WEB开发网   
核心提示: 清单 4. 得到编译单元IPackageFragmentRootroot=……;for(IJavaElementpack:root.getChildren()){if(packinstanceofIPackageFragment){for(ICompilationUn

清单 4. 得到编译单元

 IPackageFragmentRoot root = ……; 
 for (IJavaElement pack : root.getChildren()) { 
  if (pack instanceof IPackageFragment) { 
    for (ICompilationUnit cu : ((IPackageFragment) pack).getCompilationUnits()) { 
   // 操作编译单元(ICompilationUnit) 
    } 
  } 
 } 

得到 Java 编辑单元的工作副本缓存

Java 代码的可以通过操作工作副本进行修改。工作副本是代码进行修改时的分阶段缓存区域,通过工作副本可以得到操作代码的缓存。修改代码可直接通过操作工作副本的缓存来操作代码,但必须及时与原文件保持同步,避免后续操作与之冲突。修改完毕,提交将修改保存在磁盘上。为避免资源浪费,提交之后丢弃工作副本。

其原理类似于常用的 Java 编译器。在编译器中,Java 代码一旦打开,就会产生一个工作副本,用户保存代码之前的所有操作均是对工作副本的操作。只有进行关闭编辑器或保存代码等提交代码操作时,才会将文件保存到磁盘上。

本文中工具的实现是通过直接操作 Java 文件工作副本的缓存来修改 Java 文件的。首先,要根据编译单元获得工作副本,即将编译单元切换到工作副本模式(参见 清单 5)。

清单 5. 得到编译单元的工作副本

 parentCU.becomeWorkingCopy(new SubProgressMonitor(monitor, 1)); 

清单 5 中将编译单元切换到工作副本模式,就是在内存中创建一块存放 Java 代码副本的地方,即工作副本缓存。

工作副本模式下,工作副本可以得到工作副本缓存,一个 IBuffer 的实例。该实例类似于 StringBuffer 的 API,对其修改就可以达到修改与之关联的 Java 元素的效果。在提交代码之前,对缓存修改一直保存在工作副本中,直至被显示提交(参见 清单 6)。

上一页  1 2 3 4 5 6 7 8 9 10  下一页

Tags:扩展 JDT 实现

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