2012-08-07 82 views
1

我正在開發一個java應用程序,它需要一個動態屬性的特殊組件。參數序列化(使用JSON)並存儲在數據庫中,然後在運行時反序列化。所有屬性都顯示在帶有3列(屬性名稱,屬性類型和屬性值)的JTable中,並存儲在散列表中。java動態屬性表

我現在有兩個問題要解決:

  1. HashMap中還可以存儲對象和對象可以被設置爲null。如果設置爲空,我不知道他們屬於哪個類。我怎麼能存儲對象,即使它們爲空,並知道它們屬於哪個類?我是否需要將每個對象包裝在一個將保存存儲對象的類的類中?

  2. 對象在運行時從json反序列化。問題在於存在許多不同類型的對象,而我實際上並不知道將存儲在散列映射中的所有對象類型。所以我正在尋找一種動態反序列化對象的方法。有沒有這種方法?我將不得不將對象的類存儲在序列化的json字符串中嗎?

謝謝!

+0

在您的JTable中,如果屬性值是對象,第三列將顯示什麼? – 2012-08-07 13:51:45

+0

object.toString() – blejzz 2012-08-07 13:54:34

+0

您真正的需求是:A)序列化/持久化Java對象或B)以JSON動態存儲數據?此外,看到這個問題http://stackoverflow.com/questions/1395551/convert-a-json-string-to-object-in-java?rq=1 – 2012-08-07 14:23:53

回答

2
  1. 看看到空對象模式。您可以使用額外的類來表示類型的Null實例,並可以包含有關其自身的信息。

  2. 有一種叫做的類令牌,它是使用Class對象作爲異構容器的鍵。看看Effective Java通過Joshua Bloch,Item 29。我不確定這種方法如何適用於您,因爲您可能有許多相同類型的實例,但我將其作爲參考。