接收“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);
也许有人可以帮我解决问题,如何正确调用构造函数?
答案 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
参数。