我有一个项目。我不使用Lombok。我使用手动创建的getter和setter。
现在,我想导入Lombok。在我导入之后,我将使用for all entities。
我必须手动将@Data添加到所有实体吗?我必须手动删除所有实体吗?没有其他方法可以自动转换这些类了吗?
我找不到任何这样的问题:
发布于 2019-01-06 15:20:47
由于一个实体平均可能有十个字段,因此每个类需要删除大量的文本。使用标准格式和方法之间的单行,这10个getter和10个setter表示每个类的10 * 2 * 4 = 80行。您只需添加一个@Data注释即可。
因此,我将专注于删除,并编写一个简单的regex来识别琐碎的getter和setter。之后,我很乐意手动为所有修改过的文件添加注释,即使是对几十个实体也是如此。忘记一个没有问题,因为它会导致明显的编译时错误。
一个用于简单getter的简单的、未经测试的正则表达式:
[ \t]+public [\\w<,> ]+ get[A-Z](\\w+)\\(\\)\\s*\\{\\s*return\\s+[a-z]\\1;\\s*\\}\\s*\n没有这样的正则表达式是完美的(例如,当数组返回时,或者当您使用非标准格式或命名时;这很容易修复,但可能会出现其他问题)。尽管如此,它还是可以完成自己的工作。
我的正则表达式不允许在方法体中有注释,但我不认为注释的getter是微不足道的。
发布于 2019-01-15 14:56:34
在IntelliJ思想中最好的方法是使用快捷键Command + Shift +A,然后选择你想要的重构。
发布于 2021-04-23 04:29:14
我不知道有什么集成开发环境可以转换整个项目,所以我写了一个基于JavaParser的命令行工具:lomboker。到目前为止,它还没有实现到@Data的转换,但实现了所有步骤:删除getter、setter、noargsconstructors、toString和EqualsAndHash,并添加相应的注释和它们的导入。因此,将其扩展到涵盖@Data应该是相当容易的。
https://stackoverflow.com/questions/54055649
复制相似问题