请建议应用继承时如何使用@wither
。
我有一个抽象类父类
和具体的子类
。child
应该是不可变的。将@wither
放在两者上会导致两个错误:
@Value
@Wither
@NonFinal
@SuperBuilder
abstract class Parent {
String a;
}
@Value
@Wither
@EqualsAndHashCode(callSuper = true)
@SuperBuilder
class Child extends Parent {
String b;
}
我很乐意删除@wither
并使用构建器方法,但我正在重构一个公共库(试图优化模型类),我不希望在我的客户端上出现编译错误。
我还发现了解释第二个错误的这个问题。但其意图的逻辑并不清楚https://github.com/rzwitserloot/lombok/issues/945
Lombok是一个注释处理器。它们运行在每个编译单元(即Java文件)上,并且不能访问其他编译单元的信息。这意味着Lombok在处理child
时无法了解类parent
的任何内容。
因此在为child
生成代码时,Lombok不知道从parent
继承了哪些wither方法。因此,它无法为抽象的生成一个实现,其中包含来自
。parent
的()
第二个问题是wither方法需要一个构造函数,该构造函数将所有字段作为参数,包括超类中的字段。由于上述限制,也不可能为龙目岛生成。
长话短说:@wither
不能很好地使用继承。我建议只将其放在父
上,并为子
手动实现。
我试图在不创建任何构造函数的情况下链接几个@Value@非最终类。 期望lombok选择生成一个构造函数,用所有匹配的参数调用super。 有没有办法做到这一点?它似乎出现了一个毫无意义的错误,因为父类有注释给出的构造函数。我用不同文件中的类尝试了这个方法,同样的行为。 例子: 错误:(12,5)java:TestLombok类中的构造函数A。A不能应用于给定的类型;必修课:java。找到整型:无
错误是... 关于继承和@EqualSandHashCode以及Lombok有没有我正在滥用的最佳实践?或者有什么办法?
我在我的多模块maven项目中面临Lombok的问题。我有两个类: 还有一个父maven项目,其中定义了lombok依赖项。还有一个子maven项目,其中我将父项目定义为maven父项目。 当我在 类中使用生成的实例时,会发生编译错误: 我可以通过两种方式解决问题: < li >我自己手工创建了一个名为“log”的私有字段。 < li >我在子maven项目中定义了Lombok依赖项。 为什么这样
Lombok@builder不适用于继承用例: 手动创建条形图的构造函数。 将生成器批注放在该构造函数上。 有更好的变通办法吗?
问题内容: 我有一个带有很多参数的基类: 所有继承类都应运行基类的方法。 我可以在每个继承的类中编写一个将调用超类的方法,但这将是严重的代码重复: 自动调用超类的最Pythonic方法是什么? 问题答案: 如果有助于解决您的噩梦,请考虑使用 args和* kw。
超类 子类