【问题标题】:How to transfer a dynamic table from Plant Simulation to Java?如何将动态表从 Plant Simulation 传输到 Java?
【发布时间】:2016-03-10 13:39:30
【问题描述】:

我有一个使用 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 并查看如果需要,在 getter/setter 中使用这些。但是列没有类型安全性,我每次都需要一个演员表。
到目前为止,我拥有的“最佳”解决方案是为列创建具有正确数据类型的动态 HashMap - 因此在将 int 放入 String Map 时会得到 ClassCastException。但我也需要施放每一个 get 。

我不知道传输它的最佳方法是什么,所以它甚至可以使用“坏”代码,或者尝试将这些表传输到 java 是否有意义。

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

【问题讨论】:

    标签: java data-structures simulation


    【解决方案1】:

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

    【讨论】:

    • 也考虑过,但是我必须为每一列创建一个新的表对象,因为每一列都可以有不同的数据类型。所以我认为该列应该是通用的,并且可能放入一个 HashMap 但同样的演员问题..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-29
    • 2021-04-29
    • 2016-01-31
    • 2016-03-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多