<!-- If you need to report a security issue please visit https://github.com/apache/dubbo/security/policy -->

- [ ] I have searched the [issues](https://github.com/apache/dubbo/issues) of this repository and believe that this is not a duplicate.

### Environment

* Dubbo version: 2.7.18
* Operating System version: macos
* Java version: 1.8

### Steps to reproduce this issue

1. 服务端采用dubbo泛化实现方式，服务端直接返回map类型的响应对象，响应对象中有list集合，list中返回的数据为map结构
2. 客户端正常调用，收到的响应数据list中的map结构没有转换为接口定义的实际java对象，导致程序做进一步处理报错
3. 经验证3.1.1 版本仍然存在该问题
4. 经排查后出问题的类为DecodeableRpcResult，代码段如下：
<img width="768" alt="image" src="https://user-images.githubusercontent.com/12338948/199507015-8b9ca5ed-17c6-475f-9190-6cf021f2dbea.png">
<img width="1115" alt="image" src="https://user-images.githubusercontent.com/12338948/199507116-9adc85b7-14c9-47c9-9b53-f94eec2f33c2.png">


Pls. provide [GitHub address] to reproduce this issue.
https://github.com/iloveoovo/dubbo-genericimpl-issue

### Expected Behavior

consumer端能正常反序列化

### Actual Behavior
consumer 端对于响应参数字段中List 字段的泛型处理错误

new RpcInvocation("testReturnType1", serviceName, "", new Class<?>[] {String.class}, null, null, invoker, null);
        java.lang.reflect.Type[] types1 = RpcUtils.getReturnTypes(inv1);
        Assertions.assertNotNull(types1);
        Assertions.assertEquals(2, types1.length);
        Assertions.assertEquals(List.class, types1[0]);
        Assertions.assertEquals(demoServiceClass.getMethod("testReturnType1", String.class).getGenericReturnType(), types1[1]);
        Assertions.assertArrayEquals(types1, inv1.getReturnTypes());
        RpcInvocation inv2 =
                new RpcInvocation("testReturnType2", serviceName, "", new Class<?>[] {String.class}, null, null, invoker, null);
        java.lang.reflect.Type[] types2 = RpcUtils.getReturnTypes(inv2);
        Assertions.assertNotNull(types2);
        Assertions.assertEquals(2, types2.length);
        Assertions.assertEquals(String.class, types2[0]);
        Assertions.assertEquals(String.class, types2[1]);
        Assertions.assertArrayEquals(types2, inv2.getReturnTypes());
        RpcInvocation inv3 =
                new RpcInvocation("testReturnType3", serviceName, "", new Class<?>[] {String.class}, null, null, invoker, null);
        java.lang.reflect.Type[] types3 = RpcUtils.getReturnTypes(inv3);
        Assertions.assertNotNull(types3);
        Assertions.assertEquals(2, types3.length);
        Assertions.assertEquals(List.class, types3[0]);
        java.lang.reflect.Type genericReturnType3 = demoServiceClass.getMethod("testReturnType3", String.class).getGenericReturnType();
        Assertions.assertEquals(((ParameterizedType) genericReturnType3).getActualTypeArguments()[0], types3[1]);
        Assertions.assertArrayEquals(types3, inv3.getReturnTypes());
        RpcInvocation inv4 =
                new RpcInvocation("testReturnType4", serviceName, "", new Class<?>[] {String.class}, null, null, invoker, null);
        java.lang.reflect.Type[] types4 = RpcUtils.getReturnTypes(inv4);
        Assertions.assertNotNull(types4);
        Assertions.assertEquals(2, types4.length);
        Assertions.assertNull(types4[0]);