我想扩展Object的数据转换,通过传输不同的类型,改变值的类型!
求现成的方法
如:public static Object invokeValue(Object value,String typeName){
if("string".equals(typeName)){
return String.valueOf(value)
}else
.................
}求完整的帮助类,谢谢了
求现成的方法
如:public static Object invokeValue(Object value,String typeName){
if("string".equals(typeName)){
return String.valueOf(value)
}else
.................
}求完整的帮助类,谢谢了
(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转换一遍才行。
是否可以用泛型?
那你是想直接用一个通用的方法不用if else 判断就把String解析成 int double float date GregorianCalendar 等等等了?
那你是想直接用一个通用的方法不用if else 判断就把String解析成 int double float date GregorianCalendar 等等等了?
是的,类似于反射修改修饰符一样
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;
}