List<Object[]> arrayList = new ArrayList<Object[]>();
for(Object[] obj: arrayList)
{
// assuming at 0th location Timestamp value
Date dt = convertTimestampToDate((Timestamp)obj[0]) // Timestampvalue , '2013-09-11 00:00:0' throwing classCastException at this line
}
public static java.sql.Date convertTimestampToDate(java.sql.Timestamp timestamp) {
if(isNull(timestamp))
return null;
long milliseconds = timestamp.getTime() + (timestamp.getNanos() / 1000000);
return new java.sql.Date(milliseconds);
}
抛出异常是
您无法将java.lang.String强制转换为Timestamp 在这里,我假设obj [0]是一个对象类型并将其转换为Timestamp 任何想法都会很明显。
答案 0 :(得分:3)
异常是非常自我解释的。在Java中,一切都是对象(除了原语,但这是另一个主题)。所以,即使你有一组Object
s,但这并不意味着你可以任意地将那些Objects
投射到你想要的任何东西上。
Date dt = convertTimestampToDate((Timestamp)obj[0])
当您尝试演员时, obj[0]
显然是String
,因此您需要使用SimpleDateFormat
或类似内容来解析String
。您不能将String
强制转换为Timestamp
,原因很简单,因为Java没有(也不可能)知道如何做到这一点。
答案 1 :(得分:1)
您应该使用Timestamp#valueOf(String s)方法将String
对象转换为Timestamp
。
更改
Date dt = convertTimestampToDate((Timestamp)obj[0]) ;
到
Date dt = convertTimestampToDate(Timestamp.valueOf(obj[0].toString()));