代号一静态初始化块被忽略

Codename one static initialisation block ignored

似乎静态初始化块在 CN1 中不起作用,例如,自定义外部化的注册 class:

public class User {

    static {
        Util.register("User", User.class);
    }

    ...
}

但是,在 CN1 的一篇博客中,我发现这是注册可外部化 classes 的推荐方式。在文档中找不到答案。我是不是错过了什么,或者 CN1 实际上不支持静态初始化块?

静态初始化工作得很好。

虽然你所做的是行不通的...例如:

Object o = storage.readObject(...);

假设 o 是一个 User,class 尚未初始化,因此没有静态初始化程序,没有寄存器调用,序列化代码将失败。

这就是为什么我们总是在 main class 的 init(Object) 方法中注册,而从不在静态初始化程序中注册。