3

我有一个项目。我不使用龙目岛。我使用手动创建的 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

4 回答 4

6

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

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

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

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

重构菜单
(来源:github.io

于 2019-01-05T19:56:53.697 回答
1

由于一个实体平均可能有十个字段,因此每个类都有很多文本要删除。使用标准格式和方法之间的单行,这 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 微不足道。

于 2019-01-06T07:20:47.060 回答
0

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

于 2021-04-22T20:29:14.037 回答
0

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

看到这个截图

于 2019-01-15T06:56:33.873 回答