我使用匕首2进行di,并希望将一个模块(模块a)注入另一个模块(模块b)中。我不在任何组件或任何其他地方包含模块a。
我的代码如下所示:
@Module
public class ModuleA {
@Provides
@Singleton
@Named("classA")
public ClassA classA() {
return new ClassA();
}
}
@Module(includes = ModuleA.class)
public class ModuleB {
@Provides
@Singleton
public ClassB classB(@Named("classA") ClassA classA) {
return new ClassB(classA);
}
}
我得到以下错误:
ModuleB.java:18: error: This module is public, but it includes non-public (or effectively non-public) modules. Either reduce the visibility of this module or make ModuleA public.
public class ModuleB {
^
我需要moduleb是公共的,因为我将它注入到另一个包中的组件中,所以唯一的选择是将modulea公开,但它已经是公共的了。
如何解决这个问题?另外,由于我是dagger di的新手,请告诉我是否遵循了一些最佳实践,或者是否可以改进代码。
1条答案
按热度按时间jdg4fx2g1#
我能够解决这个问题,它使用的是dagger 2的旧版本。通过升级就解决了。
如果有人因为这个问题而感到不便,我很抱歉。