已知类 public class Person { public void m1() {System.out.println("This is m1");} public void m2(String a) {System.out.println("This is m2 " + a);} } 代码示例通过反射的方式获取该类的全部方法,并且通过反射方法调用该类的对象的m2方法
时间: 2024-03-22 19:38:48 浏览: 94
秋招Java-面试官就System.out.println()考了我半个小时?
5星 · 资源好评率100%
好的,以下是 java 代码示例:
```java
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
public class PersonReflectionExample {
public static void main(String[] args) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException {
Person person = new Person();
Class<?> clazz = person.getClass();
Method[] methods = clazz.getDeclaredMethods();
// 输出所有方法名
for (Method method : methods) {
System.out.println(method.getName());
}
// 调用 m2 方法
Method m2Method = clazz.getDeclaredMethod("m2", String.class);
m2Method.invoke(person, "Hello");
}
}
```
上述代码中,我们使用了反射的方式获取 Person 类的所有方法,并输出它们的方法名。然后,我们使用反射方法获取 m2 方法的 Method 对象,并将其设置为可访问状态。接着,我们使用 invoke() 方法调用了 person 对象的 m2 方法,并传递了一个字符串参数 "Hello"。
输出结果为:
```
m1
m2
This is m2 Hello
```
阅读全文