2015-02-08 73 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