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
    }
}

然后使用Jacksoninput.json反序列化为以下之一:

  1. 一个 Map<String, Object> 实例,您可以深入导航以获取所有参数
  2. 你自己的一些 class 的实例,它模仿 input.json 的结构,你的参数将驻留在其中
  3. 一个 JsonNode 实例,它将成为树的根

(1) 的优点是它很简单,您不必创建任何 class 来读取参数,但是您需要遍历地图,向下转换从中获得的值,并且您需要提前知道键(键匹配 json 对象的属性名称)。

(2) 的优点是在反序列化时可以正确键入所有内容;无需向下转换任何内容,因为每种类型都是您自己的 classes 字段,代表参数的结构。但是,如果 input.json 文件的结构发生变化,您也需要更改 classes 的结构。

(3) 是所有选项中最灵活的,我相信它是最接近您的想法的选项,但使用起来最乏味,因为它太低级了。详情请参考this article