我有一个项目。我不使用龙目岛。我使用手动创建的 getter 和 setter。
现在,我想导入 Lombok。导入后,我将用于所有实体。
我必须手动添加@Data
到所有实体吗?我必须手动删除所有实体?没有其他方法可以自动转换这些类吗?
我找不到这样的问题:
我有一个项目。我不使用龙目岛。我使用手动创建的 getter 和 setter。
现在,我想导入 Lombok。导入后,我将用于所有实体。
我必须手动添加@Data
到所有实体吗?我必须手动删除所有实体?没有其他方法可以自动转换这些类吗?
我找不到这样的问题:
在安装了 Lombok 插件的 IntelliJ IDEA 中,您应该具有以下功能:
这样你就可以一个一个地重构你的类。我不知道 Lombok 是否有任何现有的批量重构工具。
如果您对批量重构感兴趣,请在 Lombok 插件跟踪器中为issue #574投票。甚至为这个项目贡献代码。
(来源:github.io)
由于一个实体平均可能有十个字段,因此每个类都有很多文本要删除。使用标准格式和方法之间的单行,这 10 个 getter 和 10 个 setter 表示10 * 2 * 4 = 80
每个类的行数。您只需添加一个@Data
注释即可。
因此,我将专注于删除并编写一个简单的正则表达式来识别琐碎的 getter 和 setter。之后将注释添加到所有修改过的文件是我很乐意手动执行的操作,即使对于数十个实体也是如此。忘记一个没有问题,因为它会导致明显的编译时错误。
一个简单的、未经测试的正则表达式,用于简单的 getter:
[ \t]+public [\\w<,> ]+ get[A-Z](\\w+)\\(\\)\\s*\\{\\s*return\\s+[a-z]\\1;\\s*\\}\\s*\n
没有这样的正则表达式是完美的(例如,当数组返回或使用非标准格式或命名时;这很容易修复,但可能会出现其他问题)。尽管如此,它可以完成它的工作。
我的正则表达式不允许在方法体中添加注释,但我不会称已注释的 getter 微不足道。
我不知道任何可以转换整个项目的 IDE,所以我编写了一个基于 JavaParser 的命令行工具:lomboker。到目前为止,它并没有实现转换,@Data
而是实现了所有步骤:删除 getter、setter、noargsconstructors、toString 和 EqualsAndHash 并添加相应的注释及其导入。因此,将其扩展到覆盖范围也应该相当容易@Data
。
IntelliJ IDEA 中最好的方法是使用快捷键 Command + Shift + A 并选择你想要的重构。