【发布时间】:2016-02-10 01:08:03
【问题描述】:
我的问题是如何组织代码。假设我有一个用户类
public class User extends RealmObject {
@PrimaryKey
private String id;
@Required
private String name;
public User() { // per requirement of no args constructor
id = UUID.randomUUID().toString();
}
// Assume getter & setter below...
}
并且需要一个 Util 类来以异步方式处理保存,因为 RealmObjects 不能有除 getter/setter 之外的方法。
public class Util {
public static void save(User user, Realm realm) {
RealmAsyncTask transaction = realm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
realm.copyToRealm(user); // <====== Argument needs to be declared final in parent method's argument!
}
}, null);
}
}
目的是将 save() 放在 Util 类中,以防止在整个代码库中传播类似的保存代码,这样每次我想保存时,我都会这样调用它:
User u = new User();
u.setName("Uncle Sam");
Util.save(u, Realm.getDefaultInstance());
不确定这是否会影响性能,但我只是要保存所有字段,每次都会覆盖除了唯一 id 字段之外的所有字段。
问题是我现在需要在 Util.save() 方法中将“user”参数设置为 final,这意味着我不能传入需要保存的对象,只能保存一次。
是否有不同的处理方式?也许是不同的模式?还是我认为这一切都错了,应该回到 SQLite?
【问题讨论】: