gpt4 book ai didi

java - 是否可以使用 AssistedInject 来注入(inject)构造函数之外的成员?

转载 作者:行者123 更新时间:2023-12-01 22:35:38 25 4
gpt4 key购买 nike

我想做这样的事情:

@Inject private CollectorsListHolderFactory collectorsListHolderFactory;
private CollectorsListHolder collectorsListHolder;
private String projectName;
private NodeInfo node;

@Inject
public CollectorsRunner(@Assisted String projectName, @Assisted NodeInfo node) {
super();
this.projectName = projectName;
this.node = node;
collectorsListHolder = collectorsListHolderFactory.create(projectName, node);
}

但是我得到了NullPointerException,因为collectorsListHolderFactorynull。是否可以在不使用构造函数的情况下注入(inject)该成员?

最佳答案

辅助注入(inject)很乐意注入(inject)字段,与 Guice 的其余部分相同,但它发生在调用构造函数之后。 (毕竟,它需要先创建实例,然后才能设置其字段。)您可以这样做:

private final String projectName;
private final NodeInfo node;
private CollectorsListHolder collectorsListHolder;

@Inject
public CollectorsRunner(@Assisted String projectName, @Assisted NodeInfo node) {
this.projectName = projectName;
this.node = node;
}

@Inject
void injectCollectorsListHolderFactory(CollectorsListHolderFactory factory) {
this.collectorsListHolder = factory.create(projectName, node);
}

但如果可以的话,你应该avoid public injectable constructors完全。

关于java - 是否可以使用 AssistedInject 来注入(inject)构造函数之外的成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26911904/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com