2016-02-08 36 views
1

我試圖讀取多個文本文件(每個文件具有不同的佈局/模式)。Java - 具有如此多屬性的模型類與單個HashMap <key,value>

目前我的模型類有超過40個屬性和它的一種硬編碼。

我打算使用HashMap <>,所以每當有新文件出現時,我都可以通過添加更多屬性來讀取文件而無需更改模型類。

但是,這是正確的方法嗎?

請指教。

+2

如果這些屬性對您的應用程序沒有特殊含義,但只是命名值,那麼是的,請使用地圖。如果你的40個setter方法中的每一個都必須執行一個特定的或者甚至是獨特的動作,那麼你可能有真實的屬性,否則你只是有一種地圖。 – Holger

+0

@Holger:謝謝,如果我使用HashMap,它會減少堆中的對象大小? – Shankar

+1

當所有值都存在時,'HashMap'可能消耗比專用對象更多的空間。但是,如果很多值是可選的並且不存在,則可以節省一些空間。但是這不應該推動你的設計決定。 – Holger

回答

2

這兩種方法各有利弊。地圖可以提前爲未知的模式提供靈活性,但可能會成爲維護中的噩夢,而且它不是錯誤安全的 - 即不檢查您的類型。具有預定義屬性的bean是相反的。一般來說這是更好的選擇,但每次模式更改時都必須更改它。你可以有一個綜合的方法。假設你有一組將永遠存在的屬性。然後你可能會或可能不會有其他一些事先未知的屬性。所以你有一個預定義的setter和getter的bean,併爲將要處理未知屬性的Map屬性添加另一個setter和getter。我希望這可以幫助

相關問題