GSON可以使用LinkedList作为java.util.List接口的默认反序列化吗?

GSON可以使用LinkedList作为java.util.List接口的默认反序列化吗?,java,arraylist,linked-list,deserialization,gson,Java,Arraylist,Linked List,Deserialization,Gson,当GSON反序列化具有java.util.List类型的类中的字段时,它似乎倾向于使用ArrayList作为列表实现。是否有任何方法可以将其默认为使用LinkedList(而不是实际将其定义为字段类型)?简短的回答是否定的 但您仍然可以使用这种结构: LinkedList<Foo> list = new LinkedList<>( (ArrayList<Foo>) new Gson().fromJson( gsonString, new

当GSON反序列化具有java.util.List类型的类中的字段时,它似乎倾向于使用ArrayList作为列表实现。是否有任何方法可以将其默认为使用LinkedList(而不是实际将其定义为字段类型)?

简短的回答是否定的
但您仍然可以使用这种结构:

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

在这个特定的示例中,它可能不是非常重要,但是如果您有一些字段声明为接口,那么最好知道GSON可以让您在默认实现之间切换。在本例中,我将我的大多数列表设置为LinkedList,以使JVM内存分配更容易。然而,当我序列化该对象时,我注意到它是一个ArrayList。我可以明确地声明它,但我很好奇GSON是否支持这个特性。