求助:如何将包内私有PreferenceManager(context)改为public?
解决
PreferenceManager(context) 私有访问问题 - 找到项目里定义
PreferenceManager类的源码文件(.java 或 .kt) - 定位到它的构造方法,原代码大概是这样:
Java版本:
Kotlin版本:class PreferenceManager { private PreferenceManager(Context context) { // 构造方法内部逻辑 } }class PreferenceManager private constructor(context: Context) { // 类内部逻辑 } - 把构造方法的访问权限改成public:
Java修改后:
Kotlin修改后(直接去掉private关键字即可,Kotlin默认访问权限是public):class PreferenceManager { public PreferenceManager(Context context) { // 构造方法内部逻辑 } }class PreferenceManager(context: Context) { // 类内部逻辑 } - 保存文件重新编译项目,之后就能在其他包正常实例化这个类了
额外提醒
如果这个类原本是单例设计,私有构造是为了限制实例数量,改成public可能会破坏原有设计。这种情况更推荐保留私有构造,新增一个public的静态方法来提供实例:
public class PreferenceManager { private static PreferenceManager instance; private PreferenceManager(Context context) { // 构造逻辑 } public static PreferenceManager getInstance(Context context) { if (instance == null) { instance = new PreferenceManager(context); } return instance; } }
这样既不用动构造方法的权限,也能在外部正常调用。
内容的提问来源于stack exchange,提问作者KING
相关产品推荐
相关产品推荐

