Phi*_*ßen 6 java eclipse intellij-idea lombok java-8
Project Lombok很有可能减少Java 8代码库中的样板代码.缺点是它限制了工具支持(重构,静态分析).
例如,在我使用IntelliJ的实验中,对带有注释的类的字段进行重构@Builder,不再有效.我知道没有解决方法(您必须手动修复位置,使用Builder的旧方法名称).
另一个例子是在Eclipse中"查找引用"字段中找不到引用,但一个好的解决方法是打开大纲并在生成的getter/setter上应用"查找引用".
我的问题:
小智 8
这是一个小的解决方法,用于重构@Data类中变量的getter/setter.这可以在eclipse中使用,也可能在其他地方使用:
示例类,我们要将"value"重构为"value2":
import lombok.Data;
@Data
public class Thing {
int value;
}
Run Code Online (Sandbox Code Playgroud)
(1)将变量重命名(不重构)为临时的,以删除lombak为原始名称生成的getter/setter.在引用旧的getter/setter的任何地方都会遇到编译错误,但这是暂时的:
@Data
public class Thing {
int valueXXX; // reference to getValue() are broken for the moment
}
Run Code Online (Sandbox Code Playgroud)
(2)手动为旧名称创建一个虚拟的getter/setter.您的编译错误现在将消失:
@Data
public class Thing {
int valueXXX;
public int getValue() { return 0; }
public void setValue(int value) {}
}
Run Code Online (Sandbox Code Playgroud)
(3)使用eclipse重构你的虚拟getter/setter.您的代码库中的所有引用现在都使用getValue2()和setValue2():
@Data
public class Thing {
int valueXXX; //
public int getValue2() { return 0; }
public void setValue2(int value) {}
}
Run Code Online (Sandbox Code Playgroud)
(4)删除重命名的虚拟getter/setter,并将变量名从临时名称更改为新名称.现在它再次全部被破坏了:
@Data
public class Thing {
int value2;
}
Run Code Online (Sandbox Code Playgroud)
不可否认,这有点令人讨厌,但它实际上并不需要那么长时间,它确实可以手动更改数百个引用.
我最近遇到的一个:
在IntelliJ(不知道Eclipse)中,您无法提取包含lombok生成的任何方法的接口。它们不会出现在相关对话框中。
有一个简单的解决方法:让 IntelliJ 创建方法、提取接口、恢复类并让它再次实现接口。
| 归档时间: |
|
| 查看次数: |
1975 次 |
| 最近记录: |