匕首 2:将用户输入的参数注入对象
假设我有一个类Util,它接受一个对象 - 类 Validator 的一个实例。
由于我想避免在 Util 中实例化 Validator 类,因此我通过构造函数将其传入:
public class Util {
@Inject
public Util(Validator validator) {
}
}
我有一个提供验证器实例的模块:
@Provides
@Singleton
Validator provideValidator() {
return Validator.getInstance();
}
和 Util 类的一个实例:
@Provides
Util provideUtil(Validator validator) {
return new Util(validator);
}
我有一个连接在一起的组件,它将为我提供一个Util实例:
Util getUtil()
所以在我的活动中,我可以这样称呼它:
Util myUtil = getComponent.getUtil();
所有这些都工作正常 - myUtil在实例化时具有适当的 Validator 类实例。
现在我想传入一个名为 address 的 String 变量(这是用户通过 UI 输入的)。我想更改构造函数,因此我传入了验证器的实例和用户输入的字符串:
@Inject
public Util(Validator validator, String address) {
}
我只是不知道如何传递第二个参数。有人能告诉我怎么做吗?
理想情况下,我想像这样实例化Util:
Util myUtil = getComponent.getUtil(txtAddress.getText());