我将如何获得参数类型?当我之前尝试classMethods[i].getParameterTypes()
时,我的结果最终为Ljava.lang.Class;@4c5bb434
,并且每个方法都重复使用不同的值。
classMethods是一个Method数组,它获取该类的所有声明方法。
答案 0 :(得分:1)
是的,getParameterTypes()
返回一个数组 - 每个参数一个元素。只需使用:
for (Class<?> clazz : classMethods[i].getParameterTypes()) {
System.out.println("Parameter type " + clazz.getName());
}
(当然,根据您的需要调整输出。)
答案 1 :(得分:0)
如果您的参数类型是通用参数,那么这是不可能的,因为Java中的泛型仅在编译时考虑。因此,Java泛型只是某种预处理器。
答案 2 :(得分:0)
所以这就是我要说的。我认为你改变了问题::
for(int i=0; i < classMethods.length;i++)
{
System.out.println(classMethods[i].getName() + " (" + className + ", "
+ printParameters((Class<String>[])classMethods[i].getParameterTypes()) +
") -> " + classMethods[i].getReturnType());
}
printParameters打印方法参数(如果有):
public static String printParameters(Class<String>[] a)
{
String temp="";
if(a!=null)
{
for(int i=0;i<a.length;i++)
{
if(temp!="")
{
temp+=", "+a[i].getName();
}
else
{
temp = a[i].getName();
}
}
}
return temp;
}
这应该会给你想要的结果。
希望这会有所帮助......