如何使用java中的反射确定泛型类型的构造函数参数的数量?

时间:2017-03-14 20:42:42

标签: java generics reflection

我需要确定构造函数在泛型方法中运行时接受的参数数量。我知道每个类型T都扩展了相同的基类,它们每个只有一个构造函数,但是它们使用不同数量的参数。

public T someMethod() {
    // get amount of parameters T constructor takes
}

有没有一种简单的方法可以达到这个目的?

1 个答案:

答案 0 :(得分:2)

没有。由于type erasure,无法从具有该签名的方法中找到有关T的任何内容。

如果您更改方法以接受类型令牌,则是:

public T someMethod(Class<T> clazz) {
    // eg:
    Constructor<?>[] constructors = clazz.getConstructors();
    // eg:
    constructors[i].getParameterTypes();
}