自动删除带有龙目岛的吸气器?

时间:2019-01-05 19:48:32

标签: java lombok automated-refactoring intellij-lombok-plugin

我有一个项目。我不使用龙目岛。我使用手动创建的getter和setter。

现在,我想导入Lombok。导入后,我将用于所有实体。

我必须手动向所有实体添加@Data吗?我必须手动删除所有实体吗?没有其他方法可以自动转换这些类吗?

我找不到这样的问题:

https://www.google.com/search?q=lombok+automatic+remove+getter+site:stackoverflow.com&num=100&safe=off&sa=X&ved=2ahUKEwjXyqKT39bfAhXysYsKHWw4Ah0QrQIoBDAKegQIPxAM&biw=1497&bih=762

4 个答案:

答案 0 :(得分:3)

在安装了Lombok插件的IntelliJ IDEA中,您应该具有此功能:

  1. 导航到目标类别
  2. 菜单重构|龙目岛|默认@Data

这样,您可以一个一个地重构您的类。我不知道Lombok是否有任何现有的批量重构工具。

如果您对批量重构感兴趣,请在Lombok插件跟踪器中对issue #574进行投票。甚至为该项目贡献代码。

refactor menu

答案 1 :(得分:1)

由于一个实体平均可能有十个字段,所以每个类要删除很多文本。使用标准格式和方法之间的一行,这10个getter和10 setter表示每个类10 * 2 * 4 = 80行。您只需要添加一个@Data注释即可。

因此,我将专注于删除并编写一个简单的正则表达式来识别琐碎的getter和setter。之后,即使是数十个实体,我也很乐意手动将注释添加到所有修改过的文件中。忘记一个是没有问题的,因为它会导致明显的编译时错误。


一个简单的未经测试的正则表达式,用于简单的吸气剂:

[ \t]+public [\\w<,> ]+ get[A-Z](\\w+)\\(\\)\\s*\\{\\s*return\\s+[a-z]\\1;\\s*\\}\\s*\n

没有这样的正则表达式是完美的(例如,当数组返回时或使用非标准格式或命名时,我的代码会中断;这很容易解决,但可能会出现其他问题)。尽管如此,它仍然可以做到。

我的正则表达式不允许在方法主体中添加任何注释,但我不会称其为带注释的getter无关紧要。

答案 2 :(得分:0)

IntelliJ IDEA中最好的方法是使用快捷键Command + Shift + A并选择所需的重构。

see this screenshot

答案 3 :(得分:0)

我不知道有任何 IDE 可以转换整个项目,所以我写了一个基于 JavaParser 的命令行工具:lomboker。 到目前为止,它没有实现到 @Data 的转换,而是实现它的所有步骤:删除 getter、setter、noargsconstructors、toString 和 EqualsAndHash 并添加相应的注释及其导入。 因此,扩展它以涵盖 @Data 应该相当容易。