【发布时间】:2018-03-23 06:31:57
【问题描述】:
我正在使用 spring 通用转换服务来构造请求和响应以进行 SOAP/REST API 调用。
我有两个转换器,它们将通用 java 类作为输入并将它们转换为相同的响应 java 类。 Spring 的类型描述符固有地用于解析参数类型,并且 spring 转换器调用适当的转换器类。
但这不适用于用户定义的泛型类。以下是我的语法。
public class PairAConverter extends
ConversionServiceAwareConverter<Pair<ClassA, Param>, Response> {
public class PairBConverter extends
ConversionServiceAwareConverter<Pair<ClassB, Param>, Response> {
现在,当我使用以下语法调用转换器时:
Pair<ClassA, Param> pairA = Pair.of(classAObject, param);
TypeDescriptor fromType = TypeDescriptor.forObject(pairA);
Response finalResponse = (Response) conversionService.convert(pairA, fromType,
TypeDescriptor.valueOf(Response.class));
由于类型擦除,运行时调用没有任何关于 Pair 类中对象类型的指示,并且一直调用错误的转换器。我看到这可用于 Collection 类,但对于用户定义的泛型类没有功能。
有没有办法通过类型描述符获取泛型类的完整类详细信息?
【问题讨论】:
标签: java spring generics type-erasure