美文网首页从源码学dubbo
Dubbo-泛化调用-泛型

Dubbo-泛化调用-泛型

作者: 醉酒长歌 | 来源:发表于2017-10-30 20:36 被阅读37次

背景

今天刚好有需求需要用到dubbo的泛化调用,涉及到了泛型问题:服务端无法获取泛型对象的数据,特此记录。

 public Response add(Department<Person[]> department, UserInfo userName, List<Person> test);

解决方式

Department对象包含Person对象,按照普通方式调用服务将无法获取对象:

genericService.$invoke("add", new String[] {"com.xxx.Department","com.xxx..UserInfo","java.util.List"},
                new Object[] {null,null,null});

所以通过Map的形式指定泛型类型,

        Map<String, Object> data = new HashMap<String, Object>();
        data.put("name", 1);
        //指定当前对象的类型
        data.put("class", "com.xxx.Department");
        //这是子属性,所以class定义的也是子属性的类型
        Map<String, Object> person = new HashMap<String, Object>();
        person.put("class","com.xxx.Person");
        person.put("name", "TEST");
        data.put("data", person);

       //调用成功
       genericService.$invoke("add",new String[] {"com.xxx.Department",
                        "com.xxx.UserInfo","java.util.List"}
                , new Object[]{data,null,null});

需要注意的是,记得在泛化调用时,在ReferenceConfig中打开泛型:

        reference.setGeneric(true);

官方文档:https://dubbo.gitbooks.io/dubbo-user-book/demos/generic-reference.html

相关文章

  • Dubbo-泛化调用-泛型

    背景 今天刚好有需求需要用到dubbo的泛化调用,涉及到了泛型问题:服务端无法获取泛型对象的数据,特此记录。 解决...

  • 泛型

    泛型类 是在实例化类的时候指明泛型的具体类型 泛型方法 是在调用方法的时候指明泛型的具体类型 泛型方法中是用...

  • 泛型

    泛型概述 1:什么是泛型?: 泛型:“参数化类型”,可以从字面理解,参数化,在我们用参数中,定义方法用形参,调用传...

  • java 泛型

    1,如何实例化泛型 2,如何获取java中的泛型类型 调用(通常在构造方法中调用):

  • Java基础(1)泛型

    1、泛型:泛化的类型,可以在调用时自己定义的一种参数类型; 2、泛型方法:public T 方法名是泛型方法...

  • Kotlin泛型的高级特性(六)

    泛型的高级特性1、泛型实化2、泛型协变3、泛型逆变 泛型实化 在Java中(JDK1.5之后),泛型功能是通过泛型...

  • Java 语法糖及实现

    Java 中的泛型 泛型是什么 泛型,即“参数化类型”,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。 ...

  • Java基础(一)-泛型

    一、什么是泛型 泛型,即“参数化类型”。它把类型明确的工作推迟到创建对象或调用方法的时候。 二、泛型解决什么问题 ...

  • Java 泛型

    Java 泛型 什么是泛型 泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递...

  • 泛型

    泛型的定义 泛型即“参数化类型”,就是将具体的类型变成参数化类型,在声明一个泛型时,传递的是一个类型形参,在调用时...

网友评论

    本文标题:Dubbo-泛化调用-泛型

    本文链接:https://www.haomeiwen.com/subject/jpmmpxtx.html