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

Constructor.getParameterTypes() 是 Java 反射中用于获取构造函数参数类型数组的方法,它返回的是一个 Class>[],每个元素对应构造函数声明中的一个参数的运行时类型。
方法签名与基本用法
该方法定义在 java.lang.reflect.Constructor 类中:
public Class>[] getParameterTypes()
调用后直接返回按声明顺序排列的参数类型数组,不包含泛型信息(仅原始类型,如 List.class 而非 List<string>.class</string>)。
获取指定构造函数的参数类型
需先通过类对象获取 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) { ... } }</string></t>
调用该构造函数的 getParameterTypes() 返回的是 {List.class},不是 List<string>.class</string>(后者语法非法)。
若需获取泛型参数,需配合 Constructor.getGenericParameterTypes() 和 ParameterizedType 解析。
空参数列表的处理
无参构造函数调用该方法会返回长度为 0 的数组(new Class[0]),不是 null。判断时建议用 array.length == 0,而非判空。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











