我的Android应用程序中有一个配置类,我存储在Realm数据库中。我只是编辑它以遵循单例设计模式,因此只有一次配置实例。
问题是,该类现在有一个私有构造函数来阻止实例化而不调用我的'getInstance'方法。但是,RealmObject似乎需要一个公共构造函数。
是否有可能使用单一设计模式扩展RealmObject的类?
这只是Realm的一个限制,我将不得不考虑吗?
以下是上下文代码片段:
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;
}
答案 0 :(得分:1)
从概念上讲,你的单例设置在Realm的上下文中没有意义,因为你同步一个非托管对象(因此允许"只有一个线程一次访问它"通过互斥/锁定),这带来了问题:
RealmObject
? (Realm允许与其MVCC架构保持一致,如果你使用分离的副本,那么为什么要使用Realm来实现其持久性呢?)但是,是的,您需要RealmObject的公共构造函数,以便Realm可以实例化其代理实例。也许你可以尝试一个protected
构造函数,看看如果你这样做,可以通过反射实例化RealmProxy。