在Java中调用静态块之前执行的静态方法

时间:2016-09-16 22:17:36

标签: java realm

我使用Realm,这是一个用于在移动设备上创建持久对象的框架。 Realm不支持嵌套事务。所以问题是:我有一个带有静态块的类,它执行Realm事务,但是,第一次在我的代码中使用该类是通过其中一个静态方法来自另一个Realm交易。我得到的错误是java.lang.ExceptionInInitializerError,它是由此引起的:

Caused by: java.lang.IllegalStateException: Nested transactions are not allowed. Use commitTransaction() after each beginTransaction().

它带给我的导致错误的代码行是执行事务的静态块中的行。

因为第一次使用类是在Realm事务中,所以看起来静态块直到那一点才执行,这就是我得到嵌套事务引起的错误的原因。

所以只是为了澄清,类具有什么类型的变量并不重要:静态,静态最终,或者它们是作为实例变量初始化还是在静态块中初始化。在第一次与类进行交互之前,这些变量不会被初始化。正确的吗?

更新

以下是静态块中出现的代码:

RealmSingleton.getUserInstance().executeTransaction(new Realm.Transaction() {
                @Override
                public void execute(Realm realm) {
                    users.deleteAllFromRealm();
                }
            });

0 个答案:

没有答案