如何使用java中的反射来确定泛型类型的构造函数参数数量?
我需要确定在泛型方法中,构造函数在运行时接受多少个参数。我知道每个类型T都扩展了相同的基类,并且每个类型都只有一个构造函数,但是它们的参数数量不同如何使用java中的反射来确定泛型类型的构造函数参数数量?,java,generics,reflection,Java,Generics,Reflection,我需要确定在泛型方法中,构造函数在运行时接受多少个参数。我知道每个类型T都扩展了相同的基类,并且每个类型都只有一个构造函数,但是它们的参数数量不同 public T someMethod() { // get amount of parameters T constructor takes } 有没有一种简单的方法可以实现这一点?没有。因为,没有办法从带有该签名的方法中找到关于T的任何信息 如果将方法更改为接受类型标记,则选择“是”: public T someMethod(Class
public T someMethod() {
// get amount of parameters T constructor takes
}
有没有一种简单的方法可以实现这一点?没有。因为,没有办法从带有该签名的方法中找到关于T
的任何信息
如果将方法更改为接受类型标记,则选择“是”:
public T someMethod(Class<T> clazz) {
// eg:
Constructor<?>[] constructors = clazz.getConstructors();
// eg:
constructors[i].getParameterTypes();
}
publicsomemethod(类clazz){
//例如:
构造函数[]constructors=clazz.getConstructors();
//例如:
构造函数[i].getParameterTypes();
}
否。由于,无法从具有该签名的方法中找到有关T
的任何信息
如果将方法更改为接受类型标记,则选择“是”:
public T someMethod(Class<T> clazz) {
// eg:
Constructor<?>[] constructors = clazz.getConstructors();
// eg:
constructors[i].getParameterTypes();
}
publicsomemethod(类clazz){
//例如:
构造函数[]constructors=clazz.getConstructors();
//例如:
构造函数[i].getParameterTypes();
}
该信息在运行时不可用,并且不能将t
用作构造函数。你想完成什么?反射很可能是不必要的。基本上,我正在试图找到一种方法来创建一个T类型的对象,从这个方法返回。我不确定这是一个很难回答的问题。没有给出足够的信息。显示整个类,然后可以假定您知道运行时的T类型,对吗?如果是,请按照答案中的示例输入类
。虽然我猜有更好的方法来做你想做的事情。@ChristopherSchneider正确,我确信有很多更好的方法来实现它,但这就是我想到的。当前正在尝试传递类,它似乎正在按预期工作。该信息在运行时不可用,并且您不能将t
用作构造函数。你想完成什么?反射很可能是不必要的。基本上,我正在试图找到一种方法来创建一个T类型的对象,从这个方法返回。我不确定这是一个很难回答的问题。没有给出足够的信息。显示整个类,然后可以假定您知道运行时的T类型,对吗?如果是,请按照答案中的示例输入类
。虽然我猜有更好的方法来做你想做的事情。@ChristopherSchneider正确,我确信有很多更好的方法来实现它,但这就是我想到的。目前正在尝试通过课程,它似乎正在按预期工作。