使用反射调用 Integer.parseInt 方法



如何在某个变量上调用parseInt函数? 我想做类似的事情parseInt.invoke("23");

注意:我有一组存储parseInt的方法

Method[] methods contains the parseInt method

所以。。。就像 methods[0].invoke("23");

但是当我这样做时,我得到

java.lang.IllegalArgumentException: wrong number of arguments
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at myproject.MyProject.main(MyProject.java:114)

Method#invoke(Object, Object...)将第一个参数作为调用此方法的对象,从第二个参数开始,它采用该方法的参数。第一个参数必须是实例方法的引用,并且只是static方法的null。由于Integer#parseInt(String)是一种static方法。为此,必须null invoke方法的第一个参数:

methods[0].invoke(null, "23"); 

method[0] 是否返回 Integer 类的 parseInt 方法?也许这会帮助你:-

 Method m =Integer.class.getMethod("parseInt", String.class);
 System.out.println(m.invoke(null, "23"));

字符串.class是传递给parseInt的参数,即"23"

最新更新