Dubbo泛化调用时参数为泛型对象

官方文档(链接)上没有任何说明,只能自己看源代码摸索了。具体方法如下:


举例说明,例如:

public void add(Pager<User[]> users)

// 其中
class Pager {
    int size;
    User[] data;
}

class User {
    String name;
}

传参时这么写:

//泛型调用
genericService.$invoke("add", new String[] {"com.company.Pager"}
        , new Object[]{param});

其中param组装方式为:

// 子属性
Map<String, Object> user = new HashMap<String, Object>();
user.put("class","com.company.User");
user.put("name", "alice");
// 泛型
Map<String, Object> param = new HashMap<String, Object>();
param.put("size", 1);
param.put("class", "com.company.Pager");
param.put("data", user);

注意,这是一个嵌套的双层Map:外层是Pager,内层是User,

按照上述方法封装参数后,就能正常调用 public void add(Pager<User[]> users) 方法。


© 2009-2020 Zollty.com 版权所有。渝ICP备20008982号