我有一些库代码需要序列化。其中一个字段被定义为接口Foo,它只是一个标记接口。客户端代码应该创建一个实现Foo的枚举类型Bar
,以便在需要时扩展子类型列表。
我无法使用Gson中的类型适配器对其进行序列化。我得到的异常是:
java.lang.IllegalStateException: Not a JSON Object: "SETUP"
其中setup是客户端枚举Bar
的一个元素。
我添加了一个TypeAdapter
将Foo
定义为超类型,将Bar
定义为子类型,使用Gson RuntimeTypeAdapter
代码(来自Google的Gson助手)。有什么建议吗?我做错了什么,或者这种结构Gson不支持吗?
我认为我可以通过将Foo
变成一个抽象类并让Setup
成为一个子类来解决问题,但这样做略微不好,因为枚举类型只是一个标记。