在Java中 * 使用反射机制调用Person类中所有无参的公开方法(本类定义的,不含超类继承的)
时间: 2024-03-02 20:52:15 浏览: 57
可以使用Java的反射机制来实现调用Person类中所有无参的公开方法,示例如下:
```java
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
public class Person {
public void method1() {
System.out.println("执行method1方法");
}
public void method2() {
System.out.println("执行method2方法");
}
private void method3() {
System.out.println("执行method3方法");
}
public void method4(String name) {
System.out.println("执行method4方法,参数为:" + name);
}
public static void main(String[] args) throws Exception {
// 获取Person类的Class对象
Class<Person> clazz = Person.class;
// 获取Person类中所有无参的公开方法
Method[] methods = clazz.getDeclaredMethods();
for (Method method : methods) {
if (Modifier.isPublic(method.getModifiers()) && method.getParameterCount() == 0) {
// 调用方法
Object result = method.invoke(clazz.newInstance());
System.out.println("调用方法" + method.getName() + "的结果为:" + result);
}
}
}
}
```
在上面的示例中,通过调用`clazz.getDeclaredMethods()`方法获取Person类中所有的方法,然后通过`Modifier.isPublic()`方法判断方法是否为公开方法,再通过`method.getParameterCount()`方法判断方法是否为无参方法,最后使用`method.invoke()`方法调用方法并获取返回值。需要注意的是,在调用方法之前需要使用`clazz.newInstance()`方法创建类的实例。
阅读全文