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) 方法。