Dependency injection dagger能识别超类依赖关系吗

Dependency injection dagger能识别超类依赖关系吗,dependency-injection,dagger-2,Dependency Injection,Dagger 2,我的设置是这样的 interface ServiceProvider {...} @Singleton class ServiceProviderImpl implements ServiceProvider {...} class ServiceConsumer { @Inject ServiceConsumer(ServiceProvider prov) {...} } 不幸的是,这不起作用,因为它声称没有ServiceProvider的提供程序,即使子类ServiceProvi

我的设置是这样的

interface ServiceProvider {...}

@Singleton
class ServiceProviderImpl implements ServiceProvider {...}

class ServiceConsumer {

 @Inject
 ServiceConsumer(ServiceProvider prov) {...}
}
不幸的是,这不起作用,因为它声称没有
ServiceProvider
的提供程序,即使子类
ServiceProviderImpl
有一个提供程序

我明白了

错误:[Dagger/MissingBinding]c.b.d.s.ServiceProvider在没有@Providers注释方法的情况下无法提供

我可以通过向模块中添加以下内容来解决此问题

 @Provides
 @Singleton
 ServiceProvider serviceProvider(ServiceProviderImpl impl) {return impl;}

这是故意的,还是我做错了什么?

这是故意的。Dagger不会假设在没有指定的情况下使用什么接口实现

但是,对于绑定接口的实现,您应该使用它,它是
@的优化版本,为实现->接口绑定提供了

@Binds
@Singleton
ServiceProvider serviceProvider(ServiceProviderImpl impl);

这是故意的。Dagger不会假设在没有指定的情况下使用什么接口实现

但是,对于绑定接口的实现,您应该使用它,它是
@的优化版本,为实现->接口绑定提供了

@Binds
@Singleton
ServiceProvider serviceProvider(ServiceProviderImpl impl);