Java中是否有参数树实现?
Is there a Parameter Tree implementation in Java?
Java 程序接受一长串输入(参数),搅动一下,吐出一些输出。
我需要一种以理智的方式组织这些参数的方法,所以在输入 txt 文件中我想这样写它们:
parameter1 = 12
parameter2 = 10
strategy1.parameter1 = "goofy"
strategy2.parameter4 = 100.0
然后读取这个 txt 文件,把它变成一个 Java 对象,我可以在实例化它们时传递给对象。
我现在 pyqtgraph 有 ParameterTree
,使用起来很方便; Java 中有类似的东西吗?我相信其他人一定有同样的需求,所以我不想重新发明轮子。
(其他树形结构也可以,当然我只是想要简单易读的)
一种方法是将 input.txt
变成 input.json
:
{
"parameter1": 12,
"parameter2": 10,
"strategy1": {
"parameter1": "goofy"
},
"strategy2": {
"parameter4": 100.0
}
}
然后使用Jackson将input.json
反序列化为以下之一:
- 一个
Map<String, Object>
实例,您可以深入导航以获取所有参数
- 你自己的一些 class 的实例,它模仿
input.json
的结构,你的参数将驻留在其中
- 一个
JsonNode
实例,它将成为树的根
(1) 的优点是它很简单,您不必创建任何 class 来读取参数,但是您需要遍历地图,向下转换从中获得的值,并且您需要提前知道键(键匹配 json 对象的属性名称)。
(2) 的优点是在反序列化时可以正确键入所有内容;无需向下转换任何内容,因为每种类型都是您自己的 classes 字段,代表参数的结构。但是,如果 input.json
文件的结构发生变化,您也需要更改 classes 的结构。
(3) 是所有选项中最灵活的,我相信它是最接近您的想法的选项,但使用起来最乏味,因为它太低级了。详情请参考this article。
Java 程序接受一长串输入(参数),搅动一下,吐出一些输出。
我需要一种以理智的方式组织这些参数的方法,所以在输入 txt 文件中我想这样写它们:
parameter1 = 12
parameter2 = 10
strategy1.parameter1 = "goofy"
strategy2.parameter4 = 100.0
然后读取这个 txt 文件,把它变成一个 Java 对象,我可以在实例化它们时传递给对象。
我现在 pyqtgraph 有 ParameterTree
,使用起来很方便; Java 中有类似的东西吗?我相信其他人一定有同样的需求,所以我不想重新发明轮子。
(其他树形结构也可以,当然我只是想要简单易读的)
一种方法是将 input.txt
变成 input.json
:
{
"parameter1": 12,
"parameter2": 10,
"strategy1": {
"parameter1": "goofy"
},
"strategy2": {
"parameter4": 100.0
}
}
然后使用Jackson将input.json
反序列化为以下之一:
- 一个
Map<String, Object>
实例,您可以深入导航以获取所有参数 - 你自己的一些 class 的实例,它模仿
input.json
的结构,你的参数将驻留在其中 - 一个
JsonNode
实例,它将成为树的根
(1) 的优点是它很简单,您不必创建任何 class 来读取参数,但是您需要遍历地图,向下转换从中获得的值,并且您需要提前知道键(键匹配 json 对象的属性名称)。
(2) 的优点是在反序列化时可以正确键入所有内容;无需向下转换任何内容,因为每种类型都是您自己的 classes 字段,代表参数的结构。但是,如果 input.json
文件的结构发生变化,您也需要更改 classes 的结构。
(3) 是所有选项中最灵活的,我相信它是最接近您的想法的选项,但使用起来最乏味,因为它太低级了。详情请参考this article。