lombok可以降低性能吗?

Ye *_*int 21 java performance lombok

我真的很喜欢项目lombok的功能,摆脱样板代码.我的大四学生建议我,lombok似乎使用反射来减少样板代码,我曾经听说过使用反射效果表现.我的问题是使用项目lombok有什么问题吗?

chr*_*ke- 36

Lombok在运行时不使用反射.它挂钩到编译器内部,并在编译时向代码添加代码,然后正常编译.

  • 因为这是第一个答案,所以我在搜索projectlombok资源时看到了,我想加一点。你是对的。它不会在运行时降低性能,在编译时会存在性能缺陷。我们对其进行了测试,发现编译时间慢了2倍。有关更多信息,请查看以下答案:/sf/ask/1086288381/ (4认同)
  • @ChristianKaiser 我不确定这是否真的符合*缺陷*,但是,必须分叉编译器确实会减慢构建速度。 (2认同)

sib*_*ick 6

@chrylis答案是正确的,但要注意对象图(@Data@ToString注释),例如

@Data 
public class A {
   private B b;
}

@Data 
public class B {
   private A a;
}
Run Code Online (Sandbox Code Playgroud)

Lombok将创建带有无限递归的toString.你应该使用@ToString(exclude = {"a"})B 类内部的东西

  • 是的,但请注意,这很正常.Java和Guava集合的行为相同,`Arrays.toString(Object)`也是如此.lombok可以做什么,因为它不会生成每个`toString`实现. (4认同)