Demo06_ConstructorTest.java 1.5 KB

12345678910111213141516171819202122232425262728293031
  1. package J20250806.reflection;
  2. import java.lang.reflect.Constructor;
  3. import java.util.Arrays;
  4. /**
  5. * @author WanJl
  6. * @version 1.0
  7. * @title Demo06_ConstructorTest
  8. * @description 获取构造方法的参数类型以及修饰符
  9. * @create 2025/8/6
  10. */
  11. public class Demo06_ConstructorTest {
  12. public static void main(String[] args) throws NoSuchMethodException {
  13. //通过类名.class反射方式获取Person类的Class对象
  14. Class<Person> personClass = Person.class;
  15. //通过personClass对象获取Person类的构造方法,无论是否是私有化的。由于没有填写参数类型,因此是获取无参的
  16. Constructor<Person> personConstructor = personClass.getDeclaredConstructor(Integer.class,String.class,Integer.class,String.class);
  17. //如果目标构造方法是私有的,那么需要调用一个方法,增加取消检查标志
  18. personConstructor.setAccessible(true); //暴力反射
  19. //获取构造方法的参数类型 getParameterTypes()
  20. Class<?>[] parameterTypes = personConstructor.getParameterTypes();
  21. System.out.println(Arrays.toString(parameterTypes));
  22. //获取构造方法的修饰符 getModifiers()
  23. int modifiers = personConstructor.getModifiers();
  24. System.out.println(modifiers); //2 表示私有化的修饰符private
  25. //获取构造方法参数的个数 getParameterCount()
  26. int parameterCount = personConstructor.getParameterCount();
  27. System.out.println("该构造方法共有:"+parameterCount+"个参数");
  28. }
  29. }