【发布时间】:2015-12-13 23:36:26
【问题描述】:
我有一个名为 app 的 Android Studio 模块。 我有另一个名为 library 的库模块。
在 library 中,我有一些包,例如 manager 或 network。 manager 包包含一个名为 SPManager 的类,该类具有静态方法 storeSP()
package com.example.library.manager;
public class SPManager {
______ static void storeSP(){...}
}
是否可以让 storeSP() 只能在我的 library 模块中访问?如果我选择包私有(无访问修饰符),我无法从同一模块中的 network 包中访问它。如果我选择public,那么这个方法也可以从其他模块访问。
提前致谢!
【问题讨论】:
-
根据官方tutorial 看来这是不可能的,但也许有一个我不知道的解决方法。这通常是 Java 库将一些类放在名为
internal的包中的原因,因此库的使用者至少知道这些类中的 API 是内部的并且可能会更改。奇怪的是,kotlin 添加了修饰符internal,这正是你想要的。 -
正如我所怀疑的,似乎有一些方法可以做到这一点。根据 Andre Valenti 在这个问题stackoverflow.com/questions/6642909/… 中的说法,如果您使用的是 Java 9,则可以使用拼图模块,或者使用不同的 Maven 模块仅公开公共 API。
标签: java android android-studio