当前位置:编程学习 > JAVA >>

求一个util类

我想扩展Object的数据转换,通过传输不同的类型,改变值的类型!
求现成的方法
如:

public static Object invokeValue(Object value,String typeName){
    if("string".equals(typeName)){
         return String.valueOf(value)
    }else 
    .................
}

求完整的帮助类,谢谢了 --------------------编程问答-------------------- 除 --------------------编程问答-------------------- 这个不现实吧 --------------------编程问答-------------------- 类型一共就那么几个,因为在项目中经常用到json转换,导致会丢失数据的原始类型,所以想通过属性的类型来转换值 --------------------编程问答-------------------- 自己慢慢写。。 --------------------编程问答-------------------- type的class可以获得到,有没有通过反射的方式把值的类型给替换掉的,求大神 --------------------编程问答-------------------- 估计只能String 和几个数字类型之间这样转换了吧,直接Double类parseDouble然后强转
(float)Double.parseDouble("1.11")
(int)Double.parseDouble("1.11")要是只为这个的话有点得不偿失 --------------------编程问答--------------------

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;
}
}

这样判断下去很蛋疼,求反射方式 --------------------编程问答-------------------- 这个实现不了吧。返回值是个Object;
你调用的时候还是要把Object转换一遍才行。
是否可以用泛型? --------------------编程问答-------------------- 不可以使用泛型 --------------------编程问答-------------------- 用json传数据不用这个吗?JSONObject.toBean(obj, bean.class); --------------------编程问答--------------------
引用 10 楼 oOrayOo 的回复:
用json传数据不用这个吗?JSONObject.toBean(obj, bean.class);

只是举例而已,实际应用中并不是使用对象,而是直接使用的值 --------------------编程问答--------------------
引用 11 楼 deqyiyt 的回复:
Quote: 引用 10 楼 oOrayOo 的回复:

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

只是举例而已,实际应用中并不是使用对象,而是直接使用的值

那你是想直接用一个通用的方法不用if else 判断就把String解析成 int double float date GregorianCalendar 等等等了? --------------------编程问答--------------------
引用 12 楼 oOrayOo 的回复:
Quote: 引用 11 楼 deqyiyt 的回复:

Quote: 引用 10 楼 oOrayOo 的回复:

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

只是举例而已,实际应用中并不是使用对象,而是直接使用的值

那你是想直接用一个通用的方法不用if else 判断就把String解析成 int double float date GregorianCalendar 等等等了?

是的,类似于反射修改修饰符一样 --------------------编程问答--------------------
引用 13 楼 deqyiyt 的回复:
是的,类似于反射修改修饰符一样

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;
}

补充:Java ,  Java EE
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,