无getter/setter/toString/constructor的清晰代码的java Lombok替代方案
你知道龙目山有什么替代品吗?
使用Lombok,我们可以忘记将类与getter和setter以及toString
混为一谈。我想在我的项目中使用它,但是我想知道是否有更好的替代方案
我正在使用Java1.7,无法更改为1.8
你可以在下面搜索框中键入要查询的问题!
你知道龙目山有什么替代品吗?
使用Lombok,我们可以忘记将类与getter和setter以及toString
混为一谈。我想在我的项目中使用它,但是我想知道是否有更好的替代方案
我正在使用Java1.7,无法更改为1.8
# 1 楼答案
“更好”在这里相当有争议,但有一种选择是AutoValue,可用hereThis presentation解释了AutoValue和Lombok之间的一些差异
特别是,AutoValue强调不变性(通常是一件好事!)以及最低限度的语言外魔法(与龙目山大不相同)
# 2 楼答案
恐怕没有其他选择,除非你想切换到像Scala这样的东西,或者对像AutoValue所提供的一组较小的特性感到满意
虽然
AutoValue
可能是纯Java所能获得的最好的,但它提供了但它错过了
虽然我非常同意不变性是一种美德,但它有时并不适用。无论如何,Lombok努力支持不变性,它甚至与Guava的不变性集合集成,您可以编写
像这样使用它
注:我不是作者,所以我可以说它很酷
对于不可变的,
@Wither
和toBuilder
非常酷。前者允许您创建一个与单个字段不同的副本,后者提供一个从当前值开始并适合更改多个字段的生成器。以下两行是等效的:Lombok和
AutoValue
都使用了一些魔法。后者的神奇之处在于标准的注释处理,因此它非常健壮。如page 27所列,它有一些缺点。我要补充一个事实,即生成了一些我没有订购的AutoValue\u fooLombok使用了一些黑魔法,因此更加脆弱,但它提供了更多,效果也非常好