前台传一个json字符串,没有告诉我参数的类型,我想用反射机制动态调用对应的方法,但是参数匹配不了。请教下,这个参数类型如何能根据动态转换。
args[i] = (m.getParameterTypes()[i].getName())(jo.get(key));
就是这个地方,我希望将某个json的参数动态转换成与方法匹配的类型。
m.invoke(c.newInstance(), args);
没有转换就会报参数不匹配的异常。

解决方案 »

  1.   

    这个需要反射吗?没有必要把,动态参数也没有必要,可以在前台这样封装JSON数据:
    [{'name':'paramName','value':'paramValue'},{'name':'paramName','value':'paramValue'},....]
    动态生成这个JSON数据就可以了,然后在后台转换成JSONArray对象,遍历每一个JSONObject,通过jobj.name、jobj.value就可以知道参数名和值了。
      

  2.   

    可能是我没说清楚,前台的一条JSON命令就是对应我后台的一个方法。JSON命令包含了方法名,方法参数名,参数值。 我希望根据这条JSON命令动态调用到对应的方法
      

  3.   

    我找到答案了。 我直接将获取的参数写成Object类型就可以了。 只有你参与,那就你得分了
      

  4.   

    args[i] = ConvertUtils.convert(jo.get(key), m.getParameterTypes()[i]);
    //args[i] = jo.get(key);
    找到了一个转换的类。按第一行的方法转换类型就行了。 直接使用Object类型是不对的