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

码:

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);


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

最佳答案

问题在于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参数。

10-07 19:12
查看更多