java反射中method类中的invoke方法是做什么的,他有什么作用?

来源:互联网 发布:matlab智能算法 pdf 编辑:程序博客网 时间:2024/04/28 02:31

转:https://zhidao.baidu.com/question/475931699.html


  首先Method类代表一个方法,所以invoke(调用)就是调用Method类代表的方法。它可以让你实现动态调用,例如你可以动态的传人参数。下面是一个简单的例子。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
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);
    }
}

菜鸟无涯 

采纳率:74% 擅长: C/C++

其他回答

就是调用类中的方法,最简单的用法是可以把方法参数化
invoke(class, method)
比如你Test类里有一系列名字相似的方法setValue1、setValue2等等
可以把方法名存进数组v[],然后循环里invoke(test,v[i]),就顺序调用了全部setValue
 本回答被提问者采纳


0 0
原创粉丝点击