2012-08-29 33 views
0

我在應用程序中實現了標記系統。我有一個所有Tags的主要列表來標記對象。對象可以有多個標籤,它們是主列表中標籤的引用。從json反序列化時保留引用

當我將數據保存爲json文件,然後在我的應用程序再次運行時加載它,這些引用丟失(tagInMainList == referenceToTag不成立)。

我該如何解決這個問題?

+0

我會很驚訝,如果這是可以與JSON沒有特定的interner或東西。 (當然,我不認爲Gson會有一個內置的解決方案。)首先避免這個問題,或者避免使用JSON或者避免引用等式被保留,可能會更好。 –

回答

1

如果你鬆散地耦合了你的引用,這樣他們只保存了一個在地圖查找中使用的關鍵值,該怎麼辦?您仍然可以支持類似tagInMainList.equals(keyBasedReferenceToTag)tagInMainList.getKey().equals(keyBasedReferenceToTag)。 JSON會更簡單,甚至更簡潔。

1

我會關心身份,除非你需要最大限度地減少內存使用和/或其他重度優化。恐怕,你需要一個定製的解串器。有了它,你可以簡單地用return myTagInterner.intern(tag)替換return tag,使用Guava的interner

+0

@maartinus:我關心身份,因爲如果我做'foo.changeSomething()','bar'應該是對它的引用,但不是,它不會被更新。 – JustcallmeDrago