📜  Java中的类 getMethod() 方法和示例(1)

📅  最后修改于: 2023-12-03 15:32:01.902000             🧑  作者: Mango

Java中的类 getMethod() 方法和示例

在Java中,可以使用Reflection机制来访问类的方法、属性和构造函数等信息。而在Reflection中,getMethod()方法则用于获得特定的方法。本文将介绍Java中的getMethod()方法及其使用示例。

getMethod()方法的定义

在Java语言中,getMethod()是Class类中的一个方法,定义如下:

public Method getMethod(String name, Class<?>... parameterTypes)
        throws NoSuchMethodException, SecurityException

其中,第一个参数name表示方法的名称,第二个参数parameterTypes表示方法的参数类型列表。

该方法会返回一个Method类的对象,通过这个对象可以对该方法进行一系列设置和调用。

getMethod()方法示例

假设我们有一个自定义类Person,它有一个公有的方法sayHello()

public class Person {
    public void sayHello() {
        System.out.println("Hello, I'm a person.");
    }
}

现在,我们想要通过Reflection机制来获取该方法,就可以进行如下调用:

import java.lang.reflect.Method;
public class Main {
    public static void main(String[] args) throws Exception {
        Class cls = Person.class;
        Method method = cls.getMethod("sayHello");
        method.invoke(cls.newInstance());
    }
}

输出结果:

Hello, I'm a person.

这里我们通过调用Class的静态方法forName(),获取Person类的Class对象。然后,我们使用getMethod()方法获取名为 "sayHello" 的方法,而由于该方法没有任何参数,故我们在getMethod()方法中没有传入parameterTypes参数。

最后,我们通过调用invoke()方法来执行该方法,传入了cls.newInstance()表示执行该方法的对象为Person类的一个实例对象。

如果该方法需要参数,那么我们就需要在getMethod()方法中传入相应的参数类型列表了。

public class Person {
    public void sayHello(String name) {
        System.out.println("Hello, " + name + "! I'm a person.");
    }
}

import java.lang.reflect.Method;
public class Main {
    public static void main(String[] args) throws Exception {
        Class cls = Person.class;
        Method method = cls.getMethod("sayHello", String.class);
        method.invoke(cls.newInstance(), "Tom");
    }
}

输出结果:

Hello, Tom! I'm a person.

这里我们在调用getMethod()方法时传入了参数类型String.class,表示该方法需要一个String类型的参数。在执行invoke()方法时,我们传入了一个"Tom"的字符串作为该方法的参数值。

总结一下,getMethod()方法可以方便地获取类中的特定方法,而通过反射机制调用该方法,则可以更灵活地操作类的方法。