2012-06-06 29 views
1

當GSON反序列化類型爲java.util.List的類中的字段時,它似乎贊成ArrayList作爲要使用的列表實現。有沒有什麼辦法可以默認它使用LinkedList(除了實際定義它作爲字段的類型)?GSON是否可以使用LinkedList作爲java.util.List接口的默認反序列化?

+3

只是好奇,爲什麼呢? – jtahlborn

+0

在這個特定的例子中,它可能並不是特別重要,但是如果你有一些被聲明爲接口的字段,那麼知道GSON可以讓你在默認實現之間切換會很好。 在這種情況下,我將大部分列表設置爲LinkedLists以使JVM內存分配更容易。但是,當我序列化對象時,我注意到它是一個ArrayList。我可以明確地聲明它,但是如果GSON支持這個功能,那麼大多是好奇的。 – Ilya

回答

1

簡短的回答是不!
但你仍然可以使用這樣的結構:

LinkedList<Foo> list = new LinkedList<>(
    (ArrayList<Foo>) new Gson().fromJson(
     gsonString, new TypeToken<List<Foo>>(){}.getType() 
    ) 
);