接收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
参数。