gpt4 book ai didi

java - Lombok 项目中的 IDE 重构支持

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:01:28 24 4
gpt4 key购买 nike

Project Lombok试图减少我们 Java 8 代码库中的样板代码。缺点是它限制了工具支持(重构、静态分析)。

例如,在我使用 IntelliJ 的实验中,重构用 @Builder 注释的类的字段,不再有效。我知道没有解决方法(您必须手动修复使用 Builder 的旧方法名称的位置)。

另一个例子是在 Eclipse 中“查找引用”在一个字段上找不到引用,但一个好的解决方法是打开大纲并在生成的 getter/setter 上应用“查找引用”。

我的问题:

  • 它破坏了主要 IDE(尤其是 Eclipse、IntelliJ)的哪些重构功能?
  • 是否有好的解决方法?

最佳答案

这是重构 @Data 类中变量的 getter/setter 的一个小变通方法。这适用于 eclipse ,也可能适用于其他地方:

示例类,我们要将“value”重构为“value2”:

import lombok.Data;
@Data
public class Thing {
int value;
}

(1) 将变量重命名(不要重构)为临时变量以删除 lombak 为原始名称生成的 getter/setter。在引用旧的 getter/setter 的任何地方都会出现编译错误,但这是暂时的:

@Data
public class Thing {
int valueXXX; // reference to getValue() are broken for the moment
}

(2) 为旧名称手动创建虚拟 getter/setter。您的编译错误现在将消失:

@Data
public class Thing {
int valueXXX;
public int getValue() { return 0; }
public void setValue(int value) {}
}

(3) 使用eclipse 重构你的虚拟getter/setter。您的代码库中的所有引用现在都使用 getValue2() 和 setValue2():

@Data
public class Thing {
int valueXXX; //
public int getValue2() { return 0; }
public void setValue2(int value) {}
}

(4) 删除重命名的虚拟getter/setter 并将变量名从您的临时名称更改为新名称。现在它再次被 lombakized:

@Data
public class Thing {
int value2;
}

不可否认,这有点烦人,但实际上并没有花那么长时间,而且肯定比手动更改数百个引用要好。

关于java - Lombok 项目中的 IDE 重构支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31675937/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com