java.lang.Object无法强制转换为java.util.Date

时间:2014-07-29 12:16:53

标签: groovy

在我的groovy应用程序中,我使用Hibernate createCriteria()接收java.sql.Timestamp对象,我想将其转换为java.util.Date对象。我尝试了以下代码,但无济于事:

Date javaDateObject = sqlDateObject
Date javaDateOject = (Date)sqlDateObject
Date javaDateObject = sqlDateObject as Date 

我收到错误:

org.codehaus.groovy.runtime.typehandling.GroovyCastException: 
  Cannot cast object '[Ljava.lang.Object;@14a4864' with class 
  '[Ljava.lang.Object;' to class 'java.util.Date'

2 个答案:

答案 0 :(得分:1)

尝试

Date javaDateObject = new Date(sqlDateObject.time)

答案 1 :(得分:1)

由于sqlDateObject实际上是Object []而不是java.sql.Timestamp,因此错误是正常的。

假设数组包含Timestamp作为(单个)第一个元素,您当然可以Date javaDateOject = (Date) sqlDateObject[0](或者""变体)。但由于Timestamp是Date的子类,因此实际上什么都不做。

如果你真的需要一个日期,我建议你这样做:

Date javaDateOject = new Date(sqlDateObject[0].time)