从前台传回的全是String类型,后台通过反射 判断 名字相同 如传来的age相同 ,则用method.invoke(Users.class, age)来调用方法,现在的问题是传来的age全是String 类型的  但我想要int类型的,  Users中的set和get都能跟前台传来的对应的 我想问下怎么通过反射 将age强制转化为int类型啊,可能表达 不清楚    前台传来 String age="11"
Users类中有age 这个字段 就是根据字段名相同把age 转化为int型

解决方案 »

  1.   

    补充下 传过来的 可能解析成 int ,float,double...不要通过 if(xx="int") (Integer)age else if...这种方式
      

  2.   

    method.invoke(Users.class, Integer.parseInt(age))另外,invoke的第一个参数应该是个实例,而不是个Class对象
      

  3.   

    可能表达 不清楚 前台传来 String age="11"
    Users类中有age 这个字段 就是根据字段名相同把age 转化为int型这个要你自己作转化,可以参考下struts2中的转化方式,首先读取 age的类型,这里你的类型值为int,所以你需要有一个stringToInt的转化方法,方法内部一般可以写成
    return Integer.parseInt(“ages”)的实现
      

  4.   

    通过反射我可以知道users中 age的类型时int的, 所以要将传过来的age写成int 但我现在要写的是通用方法 ,user中可能是double ,float 等字段, 字段名称我可以通过反射匹配,字段类型 怎么处理啊     有没有用反射来给字段设置类型的   类似   age.xxxparse("int") int我是可以用反射从users中得到的,  age.xxxparse("int")  主要就是怎么实现这个 或者怎么根据users中age是int的 将传过来的也设为int    传过来的 参数名称和类型都是未定的 ,所以不能用Integer.parsetInt(age),我也不想用if...else 把全部类型匹配下   请问用反射能实现吗
      

  5.   

    还是不太明白,是根据传进来的age判断是不是int类型,还是根据类中定义的字段判断是不是int类型
    如果是根据字段,可以这样
    Field f = Users.class.getDeclaredField("age");
    Class<?> c = f.getType();
    if (c == int.class) {
        method.invoke(Users.class, Integer.valueOf(age));
    } else if (c == float.class) {
        method.invoke(Users.class, Float.valueOf(age));
    } else if (c == double.class) {
        method.invoke(Users.class, Double.valueOf(age));
    }
    如果是根据传进来的age,那就判断是不是包含小数点,也可以用正则