2015-02-08 80 views
1

Java程序需要一长串输入(参数),搅动一下并吐出一些输出。Java中是否有参数树实现?

我需要一种方法在一个健全的方式来组织这些参数,以便在输入txt文件我想他们这样写:

parameter1 = 12 
parameter2 = 10 
strategy1.parameter1 = "goofy" 
strategy2.parameter4 = 100.0 

然后通过阅读txt文件,把它变成一个Java对象我可以在实例化它们时传递给对象。

我现在pyqtgraph有ParameterTree这是很方便使用; Java中有类似的东西吗?我相信其他人肯定有同样的需求,所以我不想重新发明轮子。

(其它树结构也将被罚款,当然,我只是想的东西容易阅读)

+2

那么,JSON就是一个例子 – fge 2015-02-08 23:59:19

回答

1

一种方法是把input.txtinput.json

{ 
    "parameter1": 12, 
    "parameter2": 10, 
    "strategy1": { 
     "parameter1": "goofy" 
    }, 
    "strategy2": { 
     "parameter4": 100.0 
    } 
} 

然后使用Jackson反序列化input.json进入其中之一:

  1. A Map<String, Object>实例,您可以深入导航以获取全部您的参数
  2. 一些类自己模仿input.json的结构的一个实例,其中的参数将驻留
  3. 一个JsonNode实例是树的根

(1)具有这很容易,你不需要创建任何类来读取参数,但是你需要遍历地图,向下压缩你从中得到的值,并且你需要事先知道键(键匹配json对象的属性名称)。 (2)具有以下优点:在反序列化时所有东西都可以正确键入;没有必要贬低任何东西,因为每个类型都是代表参数结构的自己类的字段。但是,如果input.json文件的结构发生更改,则还需要更改类的结构。 (3)是最灵活的,我相信它是最接近你的想法的选项,尽管如此,它是最繁琐的工作,因为它太低级了。详情请参阅this article