我需要确定构造函数在泛型方法中运行时接受的参数数量。我知道每个类型T都扩展了相同的基类,它们每个只有一个构造函数,但是它们使用不同数量的参数。
public T someMethod() {
// get amount of parameters T constructor takes
}
有没有一种简单的方法可以达到这个目的?
答案 0 :(得分:2)
没有。由于type erasure,无法从具有该签名的方法中找到有关T
的任何内容。
如果您更改方法以接受类型令牌,则是:
public T someMethod(Class<T> clazz) {
// eg:
Constructor<?>[] constructors = clazz.getConstructors();
// eg:
constructors[i].getParameterTypes();
}