繁体   English   中英

基于类中的现有字段自动生成Java代码

[英]Automatically generate Java code based on existing fields in a class

脚本

我正在使用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_mdouble ,也需要在JMatIO中将其视为double[] 这可能与MATLAB面向矩阵和矩阵运算有关。

问题

我不想手动执行此操作(容易出错,需要维护),我想自动执行此过程。 理想情况下,我希望我的IDE能够检测CModel中的所有字段,并根据字段的名称和类型编写代码。 有没有办法在Java / Eclipse中执行此操作?

到目前为止的想法

我没有接受过低级编程语言的正式培训(是的,Java对我来说是低级的),而且对Java来说还是比较新的。 我确实有一些MATLAB的经验。 在MATLAB中我想我可以在for循环中使用eval()fieldnames()来完成我提到的。 我最后的办法是将Java代码复制粘贴到MATLAB中,然后使用一个巨大的丑陋脚本生成代码。 每次我想对模型进行更改时,我都会重新运行MATLAB脚本。

除了这个想法,我发现像UML这样的术语,但没有背景知识来弄清楚这是否是我正在寻找的。

任何帮助,即使只是向正确的方向推进,都非常感谢。 如果我需要进一步澄清任何事情,请告诉我。

查看您的场景,您正在进行模型驱动的代码生成,也就是说,您有一个模型,并希望根据您当前的模型生成一些代码。 因此,您需要一个模型驱动的代码生成器。

我领导了ABSE / AtomWeaver项目,因此我将概述您可以使用AtomWeaver获得所需的内容(但有其他解决方案,如MetaEdit +,XText或Eclipse自己的GMT / EMF子系统)。

AtomWeaver是一个IDE,您可以在其中构建模型并从该模型生成代码。 您可以根据需要多次更改模型,然后单击“生成”按钮以获取代码的更新版本。 ABSE是建模方法的名称。

我们不需要详细介绍,但基本上ABSE遵循“构建块”方法。 您可以创建一个表示模型特征或概念的模板。 然后,您可以将迷你代码生成器与该概念相关联。 然后,您可以“实例化”并组合这些构建块以快速构建模型。 变量增加了模型的灵活性。

您还可以更改模型,或添加新功能(“块”)并再次生成。 生成器使用Lua编程语言构建,这是一种使用C-Like语法的非常简单的语言。

理解ABSE开发方法AtomWeaver IDE的最佳方法是下载IDE并查看示例或尝试教程。 是的,您可以免费使用AtomWeaver。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM