【发布时间】:2012-08-17 17:12:22
【问题描述】:
场景
我正在使用在 Eclipse 中从头开始构建的 Java 模型。在这个模型中重要的是我们将输出保存到 MATLAB (.mat) 文件中。我不断添加新功能,这些新功能需要新字段,而这些新字段又必须在每次迭代时导出到 .mat 文件中。重新启动崩溃的模拟后,我可能必须导入 .mat 文件。要导出或导入我的 .mat 文件,我使用 JMatIO。
例如,如果我要在我的 CModel 类中添加一个新字段 rho_m(一个简单的 double),我必须添加到我的 Save() 方法中:
mlModel.setField("rho_m", new MLDouble(null, new double[] {rho_m}, 1));
对于我的 Load() 方法:
rho_m = ((MLDouble)mlModel.getField("rho_m")).getReal(0);
请注意,即使 rho_m 是 double,在 JMatIO 中也需要将其视为 double[]。这可能与 MATLAB 面向矩阵和矩阵运算有关。
问题
我想自动执行此过程,而不是手动执行此操作(容易出错,维护烦人)。理想情况下,我希望我的 IDE 检测 CModel 中的所有字段并根据字段的名称和类型编写代码。有没有办法在 Java/Eclipse 中做到这一点?
目前的想法
我没有接受过低级编程语言的正式培训(是的,Java 对我来说是低级的)并且对 Java 还是比较陌生。我确实有一些使用 MATLAB 的经验。在 MATLAB 中,我想我可以在 for 循环中使用 eval() 和 fieldnames() 来执行我提到的操作。我最后的手段是将 Java 代码复制粘贴到 MATLAB 中,然后使用一个巨大而丑陋的脚本从那里生成代码。每次我想对模型进行更改时,我都会重新运行 MATLAB 脚本。
除了这个想法之外,我还找到了诸如 UML 之类的术语,但没有背景知识来确定这是否是我正在寻找的。p>
任何帮助,即使只是朝着正确方向的一小步,我们都将不胜感激。如果我需要进一步澄清任何事情,请告诉我。
【问题讨论】:
-
关于我的解决方案的一点更新:我查看了 Eclipse 插件,它们看起来要么太复杂(协作选项、付费版本等)要么已经过时。我最终在 MATLAB 中编写了自己的“代码生成器”。 MATLAB 读取文件,使用正则表达式过滤掉 cmets、名称和类型,然后编写可以复制粘贴到模型的 Save 和 Load 方法中的源代码。
标签: java code-generation