java - Google Guice 和 Lombok - 抽象类的 @AllArgsConstructor(onConstructor = @__(@Inject))
问题描述
我发现@AllArgsConstructor(onConstructor = @__(@Inject))
在使用 Google Guice 时保持代码整洁很有帮助。我可以保存构造函数代码。例如:
@AllArgsConstructor(onConstructor = @__(@Inject))
public class SomeClass {
private final DependentClassOne classOne;
private final DependentClassTwo classTwo;
// ...
}
对于abstract
类,我可以@Inject
用于构造函数。
@AllArgsConstructor(onConstructor = @__(@Inject))
public abstract class AbstractParentClass {
private final DependentClassOne classOne;
}
public class ChildClass extends AbstractParentClass {
private final DependentClassTwo classTwo;
@Inject
public ChildClass(final DependentClassOne classOne, final DependentClassTwo classTwo) {
super(classOne);
this.classTwo = classTwo;
}
}
ChildClass
是否可以通过使用类似的东西来保存构造函数代码@AllArgsConstructor(onConstructor = @__(@Inject))
?
解决方案
AllArgsConstructor
不,由于 Lombok 的限制,当存在父构造函数时,无法在子类中定义(请参阅GitHub 上的这个问题和SO上的另一个答案)。
您可以将父项中的字段/设置器注入与子项中的构造函数注入混合,但我建议避免使用它。
推荐阅读
- reactjs - 如何避免子组件的重新渲染
- jquery - jQuery map 基于属性值和排序
- firebase - “DocumentSnapshot”不是“String”类型的 subpyte
- javascript - 仅对数组 javascript 中的值进行分页
- hadoop - 有没有办法在使用 HDFS 文件目标推送到 SSIS 中的 hdfs 时为文件提供时间戳
- python - 从 flask.session 读取返回一个空列表
- c# - Azure 不加载捆绑包
- php - 使用 Lumen 进行简单的访问授权
- windows - 有没有办法检测窗口是否已闪烁?
- django - Django 3.0.9 错误消息 course.File.file: (models.E006) 字段 'file' 与模型 'courses.itembase' 中的字段 'file' 冲突