通过反射创建对象时未初始化最终布尔字段

Final boolean field not initialized when object is created via Reflection

今天发现一件奇怪的事情。 我有一个受保护的最终布尔字段:

 protected final boolean active = true;

如您所见,我希望在实例化对象后将此字段初始化为 TRUE 值。这是一个数据库模型 class。我使用mybatis 3.1.1 从数据库中读取数据。 我看到的是当我使用 mybatis SqlSession.selectOne() 调用 db 时,我收到一个 active == false 的对象!但我没有在 sql 查询中更改此字段。 我仔细研究了 mybatis 代码,发现在 DefaultObjectFactory.java#create(Class<T>, List<Class<?>>, List<Object>) 中我的对象被实例化并且最终的 'active' 字段等于 FALSE。 好吧,我很困惑,找不到任何相关信息。 有人可以解释一下这里发生了什么吗?因为我认为 final 字段必须在构造函数逻辑结束后初始化。

感谢@Holger!

我搞砸了 类。最终字段初始化按预期工作。