使用反射调用Integer.parseInt方法

时间:2014-02-10 12:52:26

标签: java reflection methods

如何在某个变量上调用parseInt函数?我想做点什么 parseInt.invoke( “23”);

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

Method[] methods contains the parseInt method

所以......就像       方法[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)

2 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:-1)

方法[0]是否返回Integer类的parseInt方法? 可能这会对你有所帮助: -

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

String.class是传递给parseInt的参数,即“23”