我非常喜欢摆脱样板代码的项目lombok的特性。 我的老人建议我,lombok似乎使用反射来减少样板代码,我曾经听说过使用反射效果的性能。 我的问题是有任何问题使用项目龙目岛?龙目岛能否降低业绩?
12
A
回答
19
Lombok在运行时不使用反射。它挂钩到编译器的内部,并在编译时将代码添加到类中,然后正常编译。
6
@chrylis答案是正确的,但要注意对象图(@Data
和@ToString
注释),例如
@Data
public class A {
private B b;
}
@Data
public class B {
private A a;
}
龙目岛将创建带有无限递归的toString。你应该使用 类似@ToString(exclude = {"a"})
B类内
相关问题
- 1. 在龙目岛
- 2. 龙目岛Android版
- 3. 龙目岛有没有“PostConstruct”功能?
- 4. 在龙目岛的IntelliJ
- 5. 龙目岛的詹金斯
- 6. Jackson2和龙目岛@Builder
- 7. 龙目岛进口问题
- 8. 可选在龙目岛
- 9. 加龙目岛插件的IntelliJ项目
- 10. 不能对Eclipse的(太阳神)项目龙目岛的工作
- 11. 降低python降价能力
- 12. 如何与龙目岛合作?
- 13. 龙目岛批注中的Android
- 14. 龙目岛:RequiredArgsConstructor无法正常工作
- 15. 龙目岛不与STS合作
- 16. 龙目岛的建设者的遗产
- 17. 龙目岛的构造函数
- 18. 编译错误 - Groovy和龙目岛
- 19. 与Hibernate,Spring中,MySQL的5.7,龙目岛
- 20. 龙目岛@ExtensionMethod:无法解析方法
- 21. 龙目岛不生成方法
- 22. 龙目岛EqualsAndHashCode处理可选阵列
- 23. 无法覆盖龙目岛的getter
- 24. 龙目岛内部集合初始化
- 25. 龙目岛建设者是否使用反思?
- 26. log.debug是否会降低性能
- 27. SmtpClient.SendAsync是否降低或提高性能?
- 28. #defines是否会降低性能?
- 29. Ajax是否会降低性能?
- 30. CCSprite降低性能
正确,但请注意,这是非常正常的。 Java和Guava集合表现相同,“Arrays.toString(Object)”也如此。 lombok可以做的事情很少,因为它不会生成每个'toString'实现。 – maaartinus
但我的样本中没有任何收藏。默认的toString结果看起来像“[email protected]”。所以没有递归。而且@Data lombok注释可能会造成方法“hashCode”和“equals”的低效实现。 PS 我很满意龙目岛,仍然推荐使用它 – sibnick
好的,你没有收藏,但你可能有一些手写'toString'的对象。根据其实施情况,您需要排除一个字段或不。 Lombok可以通过在ThreadLocal中记录其所有'toString'调用来处理它,但这会减慢所有调用的速度。这可能是一个有用的功能,但几乎没有人要求它。 +++为什么低效的'hashCode' /'equals'?因为他们以Java处理列表的方式处理数组? PS:我对Lombok非常满意(我认为它比Java 8更强大)。 –
maaartinus