为返回类型抛出字符串日期错误-ClassCastException

问题描述:

我有方法,我移动类型对象(在这段时间类型对象是类型字符串) 我想投它来输入日期我该怎么做。 当我使用下面的代码我收到错误:为返回类型抛出字符串日期错误-ClassCastException

java.lang.ClassCastException: java.lang.String cannot be cast to java.util.Date 

代码:

} else if (typeName.equals("Date")) { 

    return new SwitchInputType<Date>((Date) memberValue); 

像这样的东西应该工作:

final SimpleDateFormat parsedDate = new SimpleDateFormat("yyyy-MM-dd"); 

final Date date; 
try{ 
    date = parsedDate.parse(stringValue); 
} catch(Exception e) { 
    // handle the exception. 
} 

How to parse a date?

SimpleDateFormat parserSDF=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
Date date = parserSDF.parse(memberValue); 
+0

我已经试过你的代码,并收到此错误:在类型日期格式的方法解析(字符串)不适用(Object) – 2013-03-20 07:01:45

+0

Date date = parserSDF.parse((String)memberValue); – user1121883 2013-03-20 07:02:29

你不能简单地投下StringDate。要从String对象获得Date,该对象的String表示形式为Date,请使用SimpleDateFormat

E.g:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); //Change format according to your needs. 
Date date = new Date(); 
try{ 
    date = sdf.parse((String)memberValue); //Update:- memberValue.toString() will also work. 
}catch(ParseException pe){ 
    //Do something on Exception. 
} 
return new SwitchInputType<Date>(date); 
+0

我曾试过你的代码,但即时通讯在解析错误:date = sdf.parse(memberValue);错误是:DateFormat类型中的方法parse(String)不适用于参数(Object),任何想法? – 2013-03-20 06:59:01

+0

这意味着memberValue的类型为“Object”而不是“String”,因此您需要将您的'memberValue'强制转换为'String'。但在此之前,你可以告诉'memberValue'中存在什么值? – SudoRahul 2013-03-20 07:00:47

+0

是的我写的成员值是对象,现在它作为字符串represted值2012-12-03 – 2013-03-20 07:04:35

如果它是一个字符串,你需要分析它。尝试使用适当格式的SimpleDateFormat。

尝试创建像这样的新日期对象Date date = new Date(long)或者如果您使用Date类创建此字符串,请使用其静态方法Date.valueOf(String s)

在分配给日期之前,您应该先将字符串转换为日期对象。使用SimpleDateFormat.parse()方法将字符串解析为Date对象。

您可以使用:

return new SwitchInputType<Date>(new SimpleDateFormat("MMMM d, yyyy", Locale.ENGLISH).parse(memberValue)); 
+0

我用你的代码和即时通讯得到这个错误:他的方法解析(字符串)类型DateFormat不适用于参数(对象),任何想法? – 2013-03-20 07:00:10

+0

然后menmberValue不是一个String类对象。你能验证吗? – 2013-03-20 07:03:36