【问题标题】:Google Guice and Lombok - @AllArgsConstructor(onConstructor = @__(@Inject)) for abstract classGoogle Guice 和 Lombok - @AllArgsConstructor(onConstructor = @__(@Inject)) 用于抽象类
【发布时间】:2021-05-18 22:08:23
【问题描述】:

我发现@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;
    }
}

是否可以使用@AllArgsConstructor(onConstructor = @__(@Inject)) 之类的东西将构造函数代码保存在ChildClass 中?

【问题讨论】:

    标签: java guice lombok


    【解决方案1】:

    不,由于Lombok的限制,当有父构造函数时,不能在子类中定义AllArgsConstructor(参见这个issue on GitHub和另一个answer on SO)。

    您可以将父项中的字段/setter 注入与子项中的构造函数注入混合使用,但我建议避免使用它。

    【讨论】:

      猜你喜欢
      • 2019-06-17
      • 1970-01-01
      • 2020-01-09
      • 1970-01-01
      • 2016-05-31
      • 1970-01-01
      • 1970-01-01
      • 2015-09-30
      • 1970-01-01
      相关资源
      最近更新 更多