我有一个使用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是有意义的。
有什么想法吗?提前谢谢!
我希望我写的不是太多,有人可以帮我一个想法。
答案 0 :(得分:0)
您可以编写一个表类并使其具有通用性。从查看你的帖子我相信它会起作用。 泛型允许您使用任何非原始数据类型的变量说“T”来实例化一个类。