Module Dagger 中的模块:此模块是 public,但它包含非 public(或实际上非 public)模块
Module in Module Dagger: This module is public, but it includes non-public (or effectively non-public) modules
我正在将 Dagger 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 为 public,因为我将它注入到位于不同包中的组件中,因此唯一的选择是制作 ModuleA public,但它已经 public.
如何解决这个问题?另外,由于我是 Dagger DI 的新手,如果我没有遵循一些最佳实践或者我是否可以改进我的代码,请告诉我。
我能够解决这个问题,它使用的是旧版本的 Dagger 2。只需升级它即可解决。
如果有人对这个问题感到不便,我们深表歉意。
我正在将 Dagger 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 为 public,因为我将它注入到位于不同包中的组件中,因此唯一的选择是制作 ModuleA public,但它已经 public.
如何解决这个问题?另外,由于我是 Dagger DI 的新手,如果我没有遵循一些最佳实践或者我是否可以改进我的代码,请告诉我。
我能够解决这个问题,它使用的是旧版本的 Dagger 2。只需升级它即可解决。
如果有人对这个问题感到不便,我们深表歉意。