java反射中method类中的invoke方法是做什么的,他有什么作用?
发布网友
发布时间:2022-04-25 06:52
我来回答
共2个回答
热心网友
时间:2023-11-04 22:47
首先Method类代表一个方法,所以invoke(调用)就是调用Method类代表的方法。它可以让你实现动态调用,例如你可以动态的传人参数。下面是一个简单的例子。
public class MethodTest
{
public static void main(String[] args)
{
String [] names ={"tom","tim","allen","alice"};
Class<?> clazz = Test.class;
try
{
Method method = clazz.getMethod("sayHi", String.class);
for(String name:names)
method.invoke(clazz.newInstance(),name);
} catch (NoSuchMethodException e)
{
e.printStackTrace();
} catch (IllegalAccessException e)
{
e.printStackTrace();
} catch (IllegalArgumentException e)
{
e.printStackTrace();
} catch (InvocationTargetException e)
{
e.printStackTrace();
} catch (InstantiationException e)
{
e.printStackTrace();
}
}
}
class Test
{
public void sayHi(String name)
{
System.out.println("Hi "+name);
}
}
热心网友
时间:2023-11-04 22:47
就是调用类中的方法,最简单的用法是可以把方法参数化
invoke(class, method)
比如你Test类里有一系列名字相似的方法setValue1、setValue2等等
可以把方法名存进数组v[],然后循环里invoke(test,v[i]),就顺序调用了全部setValue