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

标签 java generics reflection

我需要确定构造函数在运行时在泛型方法中接受多少个参数。我知道每个类型 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/

相关文章:

c# - 通用方法,是否可以返回 StreamReader 实例?

arrays - 从单例创建一个通用数组

reflection - Golang-获取结构属性名称

java - 在单独的类 Java 中调用时 ArrayList 为空

java - 从循环中保存集合中的对象

java - 这是方法还是构造函数?

java - 在java中获取通用接口(interface)

c# - 用于解析完全限定类型名称的现有类/方法

java - 具有多个匹配的正则表达式不起作用

java - 在 Android 上使用 BufferedReader 时导致 java.net.SocketTimeoutException 的原因是什么?