详解Java的getMethods()方法:返回该类及其超类中所有公共方法的数组

  • Post category:Java

Java中的getMethods()方法用于获取一个类的所有public方法,包括继承自父类以及自身所定义的public方法。该方法属于反射机制中的方法之一,其返回的数据类型为一个Method数组。

下面是该方法的详细使用攻略:

方法签名

public Method[] getMethods()

简要解释

该方法用于获取一个类的所有public方法,包括继承自父类以及自身所定义的public方法。

参数

无参数。

返回值

一个Method类型的数组,包含所有public方法的Method对象。

示例一

假设我们有一个Person类,代码如下:

public class Person {
    public void sayHello() {
        System.out.println("Hello");
    }
}

我们可以通过如下代码获取该类的所有public方法:

Class<Person> personClass = Person.class;
Method[] methods = personClass.getMethods();
for (Method method : methods) {
    System.out.println(method.getName());
}

输出结果如下:

equals
wait
wait
wait
hashCode
getClass
notify
notifyAll
toString
sayHello

可以看到,该类的所有public方法都被获取到了,包括Object类中的方法和自身定义的方法sayHello。

示例二

假设我们有一个Animal类,代码如下:

public class Animal {
    public void eat() {
        System.out.println("Animal eats food.");
    }
}

我们还有一个Cat类,继承自Animal类,代码如下:

public class Cat extends Animal {
    @Override
    public void eat() {
        System.out.println("Cat eats fish.");
    }

    public void catchMouse() {
        System.out.println("Cat catches a mouse.");
    }
}

我们可以通过如下代码获取Cat类的所有public方法:

Class<Cat> catClass = Cat.class;
Method[] methods = catClass.getMethods();
for (Method method : methods) {
    System.out.println(method.getName());
}

输出结果如下:

equals
wait
wait
wait
hashCode
getClass
notify
notifyAll
toString
eat
catchMouse

可以看到,该类所有的public方法都被获取到了,包括继承自父类的方法和自身定义的方法。注意,Cat类对eat方法进行了重写,但仍然管理获取到了父类中的eat方法和自身重写后的eat方法。