Demo08_MethodTest.java 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. package J20250806.reflection;
  2. import java.lang.reflect.Constructor;
  3. import java.lang.reflect.InvocationTargetException;
  4. import java.lang.reflect.Method;
  5. import java.util.Arrays;
  6. /**
  7. * @author WanJl
  8. * @version 1.0
  9. * @title Demo08_MethodTest
  10. * @description
  11. * @create 2025/8/6
  12. */
  13. public class Demo08_MethodTest {
  14. public static void main(String[] args) throws NoSuchMethodException, InstantiationException, IllegalAccessException, InvocationTargetException {
  15. Class<Person> personClass = Person.class;
  16. //通过Class对象获取Person的构造方法对象
  17. Constructor<Person> constructor = personClass.getDeclaredConstructor();
  18. constructor.setAccessible(true);
  19. //通过构造方法对象创建Person对象
  20. Person person = constructor.newInstance();
  21. Method showName = personClass.getDeclaredMethod("showName", String.class);
  22. //取消方法的权限检查
  23. showName.setAccessible(true);
  24. Object o = showName.invoke(person, "张三");
  25. System.out.println(o);
  26. //获取方法的返回值类型 getReturnType()
  27. Class<?> returnType = showName.getReturnType();
  28. System.out.println("showName方法的返回值类型是:"+returnType);
  29. //获取方法的参数类型列表 getParameterTypes()
  30. Class<?>[] parameterTypes = showName.getParameterTypes();
  31. System.out.println(Arrays.toString(parameterTypes));
  32. //获取这个成员方法的修饰符 getModifiers()
  33. int modifiers = showName.getModifiers();
  34. System.out.println(modifiers); // 2 表示私有化的 private
  35. }
  36. }