java map转javaBean 反射参数异常处理

来源:互联网 发布:排列三九宫图算法 编辑:程序博客网 时间:2024/05/21 10:43

             这两天在做请求参数封装时总是遇到 java.lang.IllegalArgumentException: argument type mismatch参数类型异常的问题,由于map里面定义的value是object类型在转为实体javaBean时,像Integer,Long等类型的属性就会出现此异常,解决方法如下:

public static Object toJavaBean(Object javabean, Map m) {// System.out.println(m);// 所有声明了的方法Method[] methods = javabean.getClass().getDeclaredMethods();for (Method method : methods) {if (method.getName().startsWith("set")) {// 得到该方法的参数类型Class[] params = method.getParameterTypes();String field = method.getName();field = field.substring(field.indexOf("set") + 3);field = field.toLowerCase().charAt(0) + field.substring(1);// System.out.println(field+"----"+m.get(field.toString()));Object value = m.get(field.toString());try {// convert types for some popular onesif (value != null && !"".equals(value)) {String pa = params[0].getName().toString();// if (value instanceof java.util.Date) {if (pa.equals("java.util.Date")) {value = new java.util.Date(((java.util.Date) value).getTime());}// }else if (pa.equals("java.lang.String")) {value = new java.lang.String(value.toString());} else if (pa.equals("java.lang.Integer") || pa.equals("int")) {value = new java.lang.Integer(value.toString());} else if (pa.equals("java.lang.Long")) {value = new java.lang.Long(value.toString());} else if (pa.equals("java.lang.Double")) {value = new java.lang.Double(value.toString());} else if (pa.equals("java.lang.Float")) {value = new java.lang.Float(value.toString());} else if (pa.equals("java.lang.Short")) {value = new java.lang.Short(value.toString());} else if (pa.equals("java.lang.Byte")) {value = new java.lang.Byte(value.toString());} else if (pa.equals("java.lang.Character")) {// value= new java.lang.Character(value);} else if (pa.equals("java.lang.Boolean")) {value = new java.lang.Boolean(value.toString());}method.invoke(javabean, new Object[] { value });}} catch (Exception e) {e.printStackTrace();}}}return javabean;}

0 0
原创粉丝点击