我想扩展Object的数据转换,通过传输不同的类型,改变值的类型!
求现成的方法
如:public static Object invokeValue(Object value,String typeName){
    if("string".equals(typeName)){
         return String.valueOf(value)
    }else 
    .................
}求完整的帮助类,谢谢了

解决方案 »

  1.   

    类型一共就那么几个,因为在项目中经常用到json转换,导致会丢失数据的原始类型,所以想通过属性的类型来转换值
      

  2.   

    type的class可以获得到,有没有通过反射的方式把值的类型给替换掉的,求大神
      

  3.   

    估计只能String 和几个数字类型之间这样转换了吧,直接Double类parseDouble然后强转
    (float)Double.parseDouble("1.11")
    (int)Double.parseDouble("1.11")要是只为这个的话有点得不偿失
      

  4.   


    private static final Object getValue(Type type,Object value){
    Class<?> typeClass = type.getReturnedClass();
    if(typeClass == Date.class){
    Date date = (Date)value;
    return new Date(date.getTime());
    } else if(typeClass == GregorianCalendar.class){
    Calendar cal = (Calendar) value;
    return new java.sql.Date(cal.getTimeInMillis());
    } else {
    return value;
    }
    }这样判断下去很蛋疼,求反射方式
      

  5.   

    这个实现不了吧。返回值是个Object;
    你调用的时候还是要把Object转换一遍才行。
    是否可以用泛型?
      

  6.   

    用json传数据不用这个吗?JSONObject.toBean(obj, bean.class);
      

  7.   

    只是举例而已,实际应用中并不是使用对象,而是直接使用的值
    那你是想直接用一个通用的方法不用if else 判断就把String解析成 int double float date GregorianCalendar 等等等了?
      

  8.   

    只是举例而已,实际应用中并不是使用对象,而是直接使用的值
    那你是想直接用一个通用的方法不用if else 判断就把String解析成 int double float date GregorianCalendar 等等等了?
    是的,类似于反射修改修饰符一样
      

  9.   

    String 到其他类型肯定不能用强转,只能用解析方法,基本类型用Integer.parseInt,Double.parseDouble等
    Date 用 SimpleDateFormat类 要是他们都有一个通用的解析方法名比如parseFromString(String str)那通过反射就可以不做判断就调用这个方法,比如这样 public static Object test0(Class c,String str){
    Method m;
    Object o;
    try {
    m = c.getMethod("parseFromString", new Class[]{String.class});
    o = m.invoke(c,new Object[]{str});
    } catch (Exception e) {
    e.printStackTrace();
    o = null;
    }
    return o;
    }