MacWire: возможно ли получить автоматическую разводку рекурсивно зависимых классов дел, как в @Inject с Guice?
Следующий код завершается ошибкой во время компиляции:
object Foo {
case class A()
case class B(a: A)
case class C(b: B)
lazy val a = wire[A]
// Error:(14, 22) Cannot find a value of type: [QuickMain.B]
lazy val c = wire[C]
}
Можно ли заставить Macwire автоматически сделать вывод, что он может создать B
создавая A
(Честно, lazy val a = wire[A]
не должно быть даже нужно)? Если macwire не может этого сделать, есть ли еще одна среда Scala, которая может сделать это типичным способом (я знаю о Dagger, но я ищу решение на основе scala).
Для иллюстрации, в Guice я мог бы сделать следующее:
public class JavaExample {
public static class A {}
public static class B {
@Inject
public B(A a) {}
}
public static class C {
@Inject
public C(B b) {}
}
public static void main(String[] args) {
// No bindings necessary!
var injector = Guice.createInjector();
System.out.println(injector.getInstance(C.class));
}
}