如何在Android库中创建图层而不将内部类暴露给库的使用者

时间:2019-01-17 14:20:00

标签: java android architecture

我正在创建一个android库,并希望将其分层组织。

PublicClassExposedToLibraryConsumer.java
logic.PublicFooLogicInterface1.java
logic.PackagePrivateFooLogicClass1.java
logic.PublicFooLogicInterface2.java
logic.PackagePrivateFooLogicClass2.java
domain.PublicFooDomainInterface1.java
domain.PackagePrivateFooDomainClass1.java
domain.PublicFooDomainInterface2.java
domain.PackagePrivateFooDomainClass2.java
repository.PublicFooRepoInterface1.java
repository.PackagePrivateFooRepoClass1.java
repository.PublicFooRepoInterface2.java
repository.PackagePrivateFooRepoClass2.java

1)我想要多个层,并且想通过使用接口来限制这些层之间的交互。

2)我只想向库的使用者公开PublicClassExposedToLibraryConsumer.java。他们应该不能访问其他类和接口。

这可能吗?根据我的阅读,为了使使用图书馆的东西可以访问某些东西,它需要是公共的,并且对图书馆的使用者隐藏一些东西,它需要是不公开的。通过我的阅读,这意味着您不能在不暴露某些东西的情况下分离层,并且在不被迫使用完全平坦的体系结构的情况下也无法隐藏内部类。我觉得很难相信,我必须丢失一些东西。

1 个答案:

答案 0 :(得分:0)

您可以尝试使用注释为所需文件提供特定范围,以将其限制为库的最终用户。在 Android 中执行此操作的最佳方法是在类级别上使用@RestrictTo支持库注释。

注意:对于特定实体的字段和方法,可以使用访问修饰符进行范围限定,例如私有,受保护或受包保护等。 *(如果您已经知道,请忽略它)

  

@RestrictTo:表示带注释的元素仅应   可从特定范围内访问(如   RestrictTo.Scope