gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 12:50:04 26 4
gpt4 key购买 nike

我有一个用工厂模拟制作的离散事件模拟模型,仅使用充满变量、方法和表格的网络,但不使用任何 Material 流对象。
我的任务是将这个模型转换成Java代码。

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

作为表格的示例,这里有一张图片: Example Table .
行索引和列索引对于访问单元格是可选的。每列都有一个数据类型,但这可以使用表方法 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>对于列索引和行索引,如果需要,请在 getter/setter 中查看它们。但是列没有类型安全,我每次获取都需要强制转换。
到目前为止,我拥有的“最佳”解决方案是使用列的正确数据类型创建动态 HashMap - 这样你就得到了 ClassCastException将 int 放入 String Map 时。但我还需要转换每个 get 。

我不知道传输此数据的最佳方法是什么,因此即使使用“坏”代码它也能工作,或者尝试将这些表转移到 java 是否有意义。

有什么想法吗?预先感谢!
我希望我没有写太多,有人可以帮助我出主意。

最佳答案

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

关于java - 如何将动态表从 Plant Simulation 传输到 Java?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35918145/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com