【发布时间】:2018-07-12 21:03:35
【问题描述】:
我正在尝试通过实现一个虚拟的 Java 控制台应用程序来学习 Dagger 2,并且我有这个类。
public class Lemonader {
private Water water;
private Lemon lemon;
private Sugar sugar;
private WaterCooler waterCooler;
public Lemonader(Water water, Lemon lemon, Sugar sugar) {
this.water = water;
this.lemon = lemon;
this.sugar = sugar;
this.waterCooler = new WaterCooler(water); // TODO remove hard dependency via Dagger 2
}
public void makeLemonade() {
System.out.println("Making lemonade..");
waterCooler.coolItUpTheWater();
System.out.println("Lemonade has been made with " + water.getAmount() + " liters of water, " + sugar.getAmount() + " kilograms of sugar and " + lemon.getQuantity() + " lemons.");
}
这就是我创建Lemonader 对象的方式
public class LemonaderHelper {
public Lemonader getLemonader(int waterAmount, boolean isWaterHot, int lemonQuantity, int sugarAmount) {
Water w = new Water();
w.setAmount(waterAmount);
w.setCold(isWaterHot);
Lemon l = new Lemon();
l.setQuantity(lemonQuantity);
Sugar s = new Sugar();
s.setAmount(sugarAmount);
Lemonader lemonader = new Lemonader(w, l, s);
return lemonader;
}
}
我想通过 Dagger 2 注入 Lemonader 的 WaterCooler 成员,但我找不到传递来自 Lemonader 构造函数的 water 实例的方法(我尝试创建提供 Water 和 @987654328 的模块@. 它有效,但它正在创建一个新的 water 实例,而不是传递来自 Lemonader 构造函数的实例)。我怎样才能通过 Dagger 2 做到这一点?任何帮助将不胜感激。
【问题讨论】:
标签: java dependency-injection dependencies dagger-2 dagger