Java反射 - 找不到方法

MrS*_*Scf 1 java reflection

我试图找到一个PreparedStatement(ps)的方法:

Method method = ps.getClass().getMethod("setLong", int.class, Class.forName("java.lang.Long"));
method.setAccessible(true);
method.invoke(ps, fieldIndex, value);
Run Code Online (Sandbox Code Playgroud)

但它没有找到.我必须使用Class.forName("java.lang.Long")而不是Long.class.

对于String,它可以工作:

Method method = ps.getClass().getMethod("setString", int.class, Class.forName("java.lang.String"));
method.setAccessible(true);
method.invoke(ps, fieldIndex, value);
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?任何的想法?Long的名称空间错了吗?

ass*_*ias 10

第二个参数是a long,而不是Long:

Method method = ps.getClass().getMethod("setLong", int.class, long.class);
Run Code Online (Sandbox Code Playgroud)

此外,对于String,您不需要调用Class.forName("java.lang.String"):String.class也可以.

但是如评论所述,如果你已经有了一个PreparedStatement实例,你可以简单地调用:

ps.setLong(fieldIndex, value);
Run Code Online (Sandbox Code Playgroud)