1
當GSON反序列化類型爲java.util.List的類中的字段時,它似乎贊成ArrayList作爲要使用的列表實現。有沒有什麼辦法可以默認它使用LinkedList(除了實際定義它作爲字段的類型)?GSON是否可以使用LinkedList作爲java.util.List接口的默認反序列化?
當GSON反序列化類型爲java.util.List的類中的字段時,它似乎贊成ArrayList作爲要使用的列表實現。有沒有什麼辦法可以默認它使用LinkedList(除了實際定義它作爲字段的類型)?GSON是否可以使用LinkedList作爲java.util.List接口的默認反序列化?
簡短的回答是不!
但你仍然可以使用這樣的結構:
LinkedList<Foo> list = new LinkedList<>(
(ArrayList<Foo>) new Gson().fromJson(
gsonString, new TypeToken<List<Foo>>(){}.getType()
)
);
只是好奇,爲什麼呢? – jtahlborn
在這個特定的例子中,它可能並不是特別重要,但是如果你有一些被聲明爲接口的字段,那麼知道GSON可以讓你在默認實現之間切換會很好。 在這種情況下,我將大部分列表設置爲LinkedLists以使JVM內存分配更容易。但是,當我序列化對象時,我注意到它是一個ArrayList。我可以明確地聲明它,但是如果GSON支持這個功能,那麼大多是好奇的。 – Ilya