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

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

 2010-07-30 00:00:00 来源:WEB开发网   
核心提示: 使用 IBuffer 替换原代码的操作时,需确定处理内容的起始位置及长度,扩展 JDT 实现自动代码注释与格式化(8),IJavaElement 的 getSourceRange() 方法,可得到 Java 元素的区域范围,代码重新构建之后再使用 createImport() 方法为 Java

使用 IBuffer 替换原代码的操作时,需确定处理内容的起始位置及长度。IJavaElement 的 getSourceRange() 方法,可得到 Java 元素的区域范围,起始位置 (getOffset() 方法 ) 及长度 (getLength() 方法 )。由于 IJavaElement 是其他 Java 模型元素的父类,因此,Java 模型的元素均可使用 getSourceRange() 方法得到元素的区域范围,并得到其元素内容的起始位置和长度,在后续的实现中多次使用此方法确定处理元素内容的位置及长度。

在操作过程,对工作副本缓存的修改需要通知原资源,保证原文件与副本的一致性,否则后续操作还是基于原文件进行,会覆盖之前所做的操作。JavaModelUtil 的 reconcile() 方法将触发元素变化事件,保证文件的同步。

重新添加引用包

由于在重新构建 Java 代码时,CodeGeneration 的 getCompilationUnitContent() 方法的实现中没有涉及引用包的处理。因此,需要重新为 Java 代码添加引用包。

代码 清单 9得到引用包的列表,以字符串列表的类型返回。

清单 9. 得到引用包列表

 public List<String> getImport(ICompilationUnit parentCU, 
  String lineDelimiter) throws JavaModelException { 
 List<String> allImports = new ArrayList<String>();  
 for (int i = 0; i < parentCU.getImports().length; i++) { 
  allImports.add(parentCU.getImports()[i].getElementName()); 
 } 
 return allImports; 
 } 

代码 清单 10为 Java 代码重新添加引用包列表。由于代码重新构建且与原文件同步后,就会完全丢失引用包的信息,需要在 清单 7执行之前获得引用包列表。代码重新构建之后再使用 createImport() 方法为 Java 文件逐一重新添加引用包,并及时与原文件同步。清单 10 中的省略号处的内容同清单 7。

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

Tags:扩展 JDT 实现

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