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。只需升级它即可解决。

如果有人对这个问题感到不便,我们深表歉意。