JAVA java.lang.reflect.Constructor不能调用Date构造函数

时间:2014-09-03 08:58:36

标签: java date constructor reference

接收“java.lang.reflect.invocationtargetexception”调用date(String)构造函数的实例。

代码:

Constructor constr = fieldType.getConstructor(String.class);
if (constr != null) {
    val = constr.newInstance(val.toString()); // here is exeption
}

 fieldType = java.util.Date;
 val.getclass() = java.sql.Date,
 val.toString() = 2014-05-19
 constr [is not null] = java.util.Date(java.lang.String);

也许有人可以帮我解决问题,如何正确调用构造函数?

1 个答案:

答案 0 :(得分:5)

问题是Date的构造函数会引发Exception,因为Date(String)期望String参数采用特定格式,String你传递给它的格式不同。

如果构造函数抛出异常,当使用反射时,Constructor.newInstance()会将其包装并抛出InvocationTargetException,这就是你得到的。

Date(String)所需的格式例如是:

Sat, 12 Aug 1995 13:30:00 GMT

因此,如果希望Date(String)工作而不抛出异常,则需要以此格式传递日期字符串。

您可以在Date.parse()的javadoc中找到有关所需格式的更多信息,因为构造函数会调用它来解析String参数。