获取错误
在Foo.java中找不到合适的构造函数。类必须有一个(只有一个)带有@Inject的构造函数或一个非私有的零参数构造函数。
当我添加到课程Bar
// constructor
@Inject
Bar(Foo foo) { /* ... */ }
以前,Bar
是没有@Inject的无参数构造函数。这很有用(服务器可以启动)。
我一直有一个* Module.java类,它提供了一个Foo的副本。
我没有简单地将@Inject添加到Foo,因为Foo有两个构造函数。我的Module类的@Provides方法使用。
所以我不清楚为什么我需要将@Inject添加到已经提供的这个类中。 Injector应该能够从@Provides方法实例化它,而不依赖于Foo的构造函数,不是吗?
答案 0 :(得分:1)
事情并没有出现。
我的@Provides方法返回Optional<Foo>
。对于编译器和运行时,这当然是完全不同的。通过Bar
接受Optional<Foo>
解决问题。