Gson和抽象超类:反序列化问题

假设有一个抽象类,比如A ,和两个非抽象子类,比如A1A2 。 我想通过使用GSON库从json格式“反序列化”它们。

例如,我得到了一个A对象数组。

 int n = ...; A[] list = new A[n]; A[0] = new A1(....); A[1] = new A2(....); ... 

有人转换为JSON字符串,如下所示:

 String json = (new Gson()).toJson(list); 

最后,如果我尝试反序列化如下

 A[] deserializedList = (new Gson()).fromJson(json, A[].class); 

然后我有一个错误,因为GSON默认的反序列化器找到一个抽象类(即A ),它不能猜测子类类型。

我怎么解决这个问题?

PS:我读过关于自定义反序列化器的内容,但我不明白在这种情况下如何使用它们。