如何将动态表从Plant Simulation传输到Java?

时间:2016-03-10 13:39:31

标签: java data-structures simulation

我有一个使用Plant Simulation制作的离散事件仿真模型,只使用填充了变量,方法和表的网络,但没有任何物料流对象。 我的任务是将此模型转换为Java代码。

我开始使用ANTLRv4为SimTalk(Plant Simulation中的编程语言)编写语法文件,以将此模型转换为Java。然后我写了一个访问者,为每个网络打印一个Java类 我的大问题代表java中的表,因为它们是如此动态(至少我认为)

这里的表格的一个例子是一张图片: Example Table
rowindex和columnindex对于访问单元格是可选的。每列都有一个数据类型,但可以使用表方法setDataType更改,如table.setDataType(3, "String")

访问单元格的示例方法:

is
    i : Integer;
    a : table[string,integer];
    s1 : String;
do
    a.create; //table is instanced
    a[1,1] := "Hello" //value of cell at Column: 1 and Cell: 1 is "Hello"
    Table[3,1] := a; //value of this cell is the table a
    i := table["Columnindex 1", 1]; //value of i is 1
    i := table["Columnindex 1", "Rowindex"] + table[1, 2] //value of i is 5
    s1 := table[0, 0] //value of s1 is "Columnindex"
end;

首先我考虑为每个表创建一个类,但这会是太多的类,而且对于更改数据类型等太过静态了。然后我想到了一个HashMap<Integer,HashMap<Integer, Object>>HashMap<String, Integer>用于columnindex和rowindex并在getters / setter中查看这些内容。但是对于一个列没有类型安全性,我需要每次获得一个演员 到目前为止,我所拥有的“最佳”解决方案是为列创建具有正确数据类型的动态HashMaps - 因此在将int放入String Map时会得到ClassCastException。但是我也需要投出每一个。

我不知道传输这个的最佳方法是什么,所以即使使用“坏”代码也是如此,或者尝试将这些表格转换为java是有意义的。

有什么想法吗?提前谢谢!
我希望我写的不是太多,有人可以帮我一个想法。

1 个答案:

答案 0 :(得分:0)

您可以编写一个表类并使其具有通用性。从查看你的帖子我相信它会起作用。 泛型允许您使用任何非原始数据类型的变量说“T”来实例化一个类。