gpt4 book ai didi

java - 将 RealmObject 扩展为单例的类

转载 作者:行者123 更新时间:2023-12-01 09:09:18 25 4
gpt4 key购买 nike

我的 Android 应用程序中有一个配置类,我将其存储在 Realm 数据库中。我只是对其进行了编辑以遵循单例设计模式,因此只有一次配置实例。

问题是,该类现在有一个私有(private)构造函数,可以防止在不调用我的“getInstance”方法的情况下进行实例化。然而,RealmObject 似乎需要一个公共(public)构造函数。

是否不可能有一个使用单例设计模式扩展 RealmObject 的类?

这只是我必须考虑的 Realm 限制吗?

这是上下文的代码 fragment :

public static  AppConfiguration getInstance(){
if(configuration == null){
synchronized (AppConfiguration.class) {
if (configuration == null) {
configuration = new AppConfiguration();
}
}
}
return configuration;
}

//constructor is private to prevent instantiation without using getInstance, enforces singleton
private AppConfiguration() { //The constructor defined as private which is causing the problem
this.isRegistered = false;
this.isLoggedIn = false;
}

最佳答案

从概念上讲,您的单例设置在 Realm 上下文中没有意义,因为您同步了一个非托管对象(从而允许通过互斥/锁定“一次只有一个线程访问它”),这提出了问题:

  • 如果该对象是非托管的,那么为什么它是一个RealmObject? (Realm 允许与其 MVCC 架构保持一致,如果您使用分离副本,那么为什么要使用 Realm 来实现其持久性?)
  • 如果对象被管理,那么您将如何从多个线程访问它? (托管 RealmObject 是线程限制的 ~ 您需要将其设置为 ThreadLocal,并在其 Realm 关闭时将其清除)
<小时/>

但是,您需要 RealmObject 的公共(public)构造函数,以便 Realm 可以实例化其代理实例。也许您可以尝试使用 protected 构造函数,看看是否可以通过反射实例化 RealmProxy。

关于java - 将 RealmObject 扩展为单例的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41018191/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com