0

我需要将 ~20k 内置函数和常量从 CHM 文件填充到列表中。首先,我尝试序列化它们的列表,但反序列化需要 1500 毫秒(对于快速完成代码来说太长了,即使是第一次命中也是如此)。

尝试使用 StringTemplate 生成代码,生成有效代码。但它不会编译,因为“initEnums() 方法超出了 65536 的大小限制”。(我的 Eclipse 很快就死了)

生成的方法如下所示:

public XModelField[] initEnums() {
    return new XModelField[] {
        new XModelField("aName", "aType", ...),
        ...
        // About 4'000 more entries
    };
}

如果这个限制仅限于源代码,我可以使用另一个库直接生成类文件(可能是 CodeModel)。如果可能的话,我想保留我的代码,而无需再次从头开始重写输出生成器。有什么建议么?

4

1 回答 1

1

我认为你应该重新考虑你的策略。相应地为您的数据结构和方法建模,您不必生成代码。代替为 4000 个常量生成 Java 代码,将您的数据存储在文件或数据库中,并编写一个简短的方法来在初始化时读取该数据,以用您的数据对象填充列表。

生成代码是一个强大的工具,但你应该小心使用它。我认为您的用例甚至不需要它,但如果您认为它是必要的,那么您可以尝试将要生成的代码部分最小化到绝对最小值以保持简单。通常,您可以将大量通用代码提取到抽象超类中,这样您只需为子类中的某些方法生成代码。并且为 4000 个常量生成代码确实是不必要的。将数据保存为数据并动态操作您的数据。

于 2013-03-26T21:19:23.097 回答