我有一个项目。我不使用龙目岛。我使用手动创建的getter和setter。
现在,我想导入Lombok。导入后,我将用于所有实体。
我必须手动向所有实体添加@Data
吗?我必须手动删除所有实体吗?没有其他方法可以自动转换这些类吗?
我找不到这样的问题:
答案 0 :(得分:3)
在安装了Lombok插件的IntelliJ IDEA中,您应该具有此功能:
这样,您可以一个一个地重构您的类。我不知道Lombok是否有任何现有的批量重构工具。
如果您对批量重构感兴趣,请在Lombok插件跟踪器中对issue #574进行投票。甚至为该项目贡献代码。
答案 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并选择所需的重构。
答案 3 :(得分:0)
我不知道有任何 IDE 可以转换整个项目,所以我写了一个基于 JavaParser 的命令行工具:lomboker。
到目前为止,它没有实现到 @Data
的转换,而是实现它的所有步骤:删除 getter、setter、noargsconstructors、toString 和 EqualsAndHash 并添加相应的注释及其导入。
因此,扩展它以涵盖 @Data
应该相当容易。