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