原代码如下:
编译不报错,但是运行起来就出现了问题。
接口响应为
问题出在这一行
虽然在编译阶段可以通过,此时编译器知道我们的泛型类型。但是运行时已经发生了泛型擦除,在返回值解析的时候我们给的类型是CommonResponse.class,无法得知其中data属性的具体类型,所以发生了类型转换异常。
正确姿势:
使用TypeReference来传递泛型信息。
关于Java Type的详细知识,请参考大神文章
原代码如下:
编译不报错,但是运行起来就出现了问题。
接口响应为
问题出在这一行
虽然在编译阶段可以通过,此时编译器知道我们的泛型类型。但是运行时已经发生了泛型擦除,在返回值解析的时候我们给的类型是CommonResponse.class,无法得知其中data属性的具体类型,所以发生了类型转换异常。
正确姿势:
使用TypeReference来传递泛型信息。
关于Java Type的详细知识,请参考大神文章