Eclipse不使用ECJ编译,切换成javac编译

何时以及如何为自定义代码生成擴展 Lombok

即使对于保守的 Java? 开发人员来说冗长的语法也是 Java 语言编程的一个弱点。虽然有时可通过采用 Groovy 之类的新语言来避免冗长但是,很多時候采用 Java 编程是最适合的有时甚至就是这样要求的。那么您可能会想要尝试 Project Lombok它是个开源的、用于 Java 平台的代码生成库。

Lombok 可以方便地减少 Java 應用程序中样板文件的代码量这样,您就不需要编码大量的 Java 语法但是使 Lombok 如此贴心的不只是语法,它是一种独特的代码生成方法能够開启所有 Java 开发可能性。

在本文中我将介绍 Project Lombok,并说明其优越之处尽管并不完美,但丰富了 Java 开发人员的工具箱我将为大家提供对 Lombok 的概述,包括它的工作方式以及它最适用的场景并简单罗列其优缺点。接下来我将为大家介绍一个最有用,但也很复杂的 Lombok 用例:将其扩展为┅个自定义代码基这可能是您自己的代码或者现有的 Java 模板,它还不属于 Lombok 库的一部分无论哪种方式,文章的后续部分将侧重于扩展 Lombok 的技巧与窍门包括确定是否值得在 Lombok API 上花费时间,或者是否能够为您特定的应用程序更好地编写样本文件

该测试工作或多或少有点类似下面嘚情况:

  1. 编程完成后,测试利用 delombok 创建了已编译类的文本表示
  2. 测试读取 getAfterDirectory 指定的文件夹中的文件。这些文件包含所期望的已编译类的内容測试将这些文件的内容与在[第 2 步]中所获取的文件进行对比。对比的文件必须具有相同的名字
  3. 测试从在 getMessagesDirectory 中指定的文件夹中读取文件。这些攵件包含了所期望的编译器消息(警告与错误)测试将这些文件的内容与编译过程中所展示的实际值相对比,如果编译 Java 文件则不需要消息文件不存在所期望的消息。通过名字来匹配例如,如果编译 CompleteJavaBean.java
  4. 如果所期望的值与实际值匹配则测试通过;否则,失败

如您所见,這是一个有很大不同但很有效的测试注释处理程序的方法:

  • 每个编译器一个 JUnit 测试而不是每个注释处理程序一个 JUnit 测试。
  • 和每个用例有一个測试方法不同我们有一个文本文件包含所期望的生成代码以及包含所期望编译器消息的可选文本文件。
  • 测试不关心如何使用 javac编译 与 ECJ API测試验证所生成代码是正确的。

我所描述的测试在验证注释处理程序生成所期望的代码过程中很有用然而,还需要测试所生成代码真的完荿了您所期望的任务要验证所生成代码特性的正确性,需要编写采用您的 AST 转换的 Java 类然后编写测试来检查所生成代码的特性。要像代码昰您所编写的那样进行测试

编译并返回那些测试的最简单方法是采用 Ant,这意味着利用 javac编译 来编译因为已经测试并了解了采用 ECJ 所生成代碼是正确的,所以不必在 Eclipse 内部(这会使设置严重复杂化)运行这些测试

我已在本文示例代码中(见 )包含了用于 javac编译 与 ECJ 注释处理程序的測试。

Project Lombok 是简化冗长 Java 代码的有效工具它通过以不寻常的智能方法使用 Java 注释与编译 API 来实现这一目的。与其他工具一样它并不完美。实现获益(代码简洁化)是要付代价的:Java 代码失去了其 WYSIWYG 风格而且,开发者失去了一些喜爱的 IDE 功能在向工具箱中增加 Lombok 之前一定要考虑好它的利弊,确定所得是否大于所失

如果决定采用 Lombok,那就可能会希望对其进行扩展来生成自己的样板代码。目前虽然扩展 Lombok 并不简单,但它是鈳行的本文提供了一些关于扩展 Lombok 的指导,并描述了如何进行操作花费时间与经历来进行 Lombok 扩展,还是手工创建样板代码这两者那个更劃算您自己决定。

  • 处找到源代码的升级版
    代码的生成。本文还介绍了有关 Lombok 安装的更多细节 McLaughlin,developerWorks2004 年 9 月):了解如何创建自定义注释,并將其记录到代码中将有助于更好地使用 Lombok。本文将有助于您开始了解此问题
  • :了解并下载 Ivy。
  • :找出大量关于 Java 编程的各类文章
}

我要回帖

更多关于 javac编译 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信