Constructor.getParameterTypes()返回Class<?>[]数组,按声明顺序包含构造函数各参数的运行时原始类型,不保留泛型信息,无参构造函数返回长度为0的数组。

Constructor.getParameterTypes() 是 Java 反射中用于获取构造函数参数类型数组的方法,它返回的是一个 Class<?>[],每个元素对应构造函数声明中的一个参数的运行时类型。
方法签名与基本用法
该方法定义在 java.lang.reflect.Constructor 类中:
public Class<?>[] getParameterTypes()
调用后直接返回按声明顺序排列的参数类型数组,不包含泛型信息(仅原始类型,如 List.class 而非 List<String>.class)。
立即学习“Java免费学习笔记(深入)”;
获取指定构造函数的参数类型
需先通过类对象获取 Constructor 实例,再调用该方法。常见方式有:
- 使用
Class.getConstructor(Class...)获取特定签名的公共构造函数 - 使用
Class.getDeclaredConstructor(Class...)获取任意访问权限的构造函数(包括 private) - 使用
Class.getConstructors()或Class.getDeclaredConstructors()遍历所有构造函数
例如:
Person.class.getConstructor(String.class, int.class).getParameterTypes();
返回 {String.class, int.class}
注意泛型擦除和原始类型
Java 泛型在运行时被擦除,所以 getParameterTypes() 返回的是类型擦除后的原始类。比如:
public class Box<T> { public Box(List<String> items) { ... } }
调用该构造函数的 getParameterTypes() 返回的是 {List.class},不是 List<String>.class(后者语法非法)。
若需获取泛型参数,需配合 Constructor.getGenericParameterTypes() 和 ParameterizedType 解析。
空参数列表的处理
无参构造函数调用该方法会返回长度为 0 的数组(new Class[0]),不是 null。判断时建议用 array.length == 0,而非判空。


















