首页 > 解决方案 > 如何正确使用 Gson.getAdapter(Class ) 和 TypeAdapter.write 与泛型?

问题描述

我有以下代码,它只有两个警告。

Gson gson = ...
JsonWriter = ...
Serializable value = ...
TypeAdapter adapter = gson.getAdapter(value.getClass());
adapter.write(out, value);

IntelliJ 建议我最后两行:

Raw use of parameterized class 'TypeAdapter'

Unchecked call to 'write(JsonWriter, T)' as a member of raw type 'com.google.gson.TypeAdapter'

我想摆脱这些警告,但我不知道该怎么做。我尝试了以下方法:

TypeAdapter<Serializable> adapter = gson.getAdapter(value.getClass());
adapter.write(out, value);

这会导致错误 ( Incompatible equality constraint: Serializable and capture of ? extends Serializable)。

所以我试过这个,但这也是错误的。

TypeAdapter<? extends Serializable> adapter = gson.getAdapter(value.getClass());
adapter.write(out, value);

现在的错误是:Required type: capture of ? extends Serializable Provided: Serializable

我能做些什么呢?我只是希望省略泛型不是让代码运行的唯一解决方案?

标签: javagenericsgson

解决方案


推荐阅读