我需要确定构造函数在运行时在泛型方法中接受多少个参数。我知道每个类型 T 都扩展相同的基类,并且它们各自只有一个构造函数,但它们采用不同数量的参数。
public T someMethod() {
// get amount of parameters T constructor takes
}
有没有简单的方法可以实现这一点?
最佳答案
没有。由于 type erasure ,无法从具有该签名的方法中找到有关 T
的任何信息。
如果您更改方法以接受类型 token ,则可以:
public T someMethod(Class<T> clazz) {
// eg:
Constructor<?>[] constructors = clazz.getConstructors();
// eg:
constructors[i].getParameterTypes();
}
关于java - 如何使用 java 中的反射确定泛型类型的构造函数参数数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42796187/