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

Edg*_*gar 2 java constructor date 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);
Run Code Online (Sandbox Code Playgroud)

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

icz*_*cza 5

问题是Date抛出的构造函数是Exception因为Date(String)期望String参数是特定格式,而String传递给它的格式是不同的.

当构造函数抛出异常时使用反射时,Constructor.newInstance()将包装它并抛出一个InvocationTargetException你得到的东西.

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

Sat, 12 Aug 1995 13:30:00 GMT
Run Code Online (Sandbox Code Playgroud)

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

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

  • +1此外:不推荐接受`String`的`java.util.Date`的构造函数. (2认同)