输出应如下所示:
foo(A, T1, T2) -> void
栏(A,T1,T2,T3)->整数
doo() -> 双
public static class A {
void foo(int T1, double T2) { }
int bar(int T1, double T2, char T3) { return 1; }
static double doo() { return 1; }
}
static void displayMethodInfo(Object obj)
{
Class<?> a = obj.getClass();
Method[] methods = a.getDeclaredMethods();
for (Method y : methods) //print methods
{
System.out.print(y.getName() + "(" ); // + y.getDeclaringClass().getSimpleName());
Type[] types = y.getGenericParameterTypes(); //get parameter types
if (!(Modifier.isStatic((y.getModifiers()))))
{
//non-static method, output this class namr as the 1st argument
System.out.print(y.getName()); //display
if (types.length > 0)
{
//put a comma and space
System.out.print(", ");
}
}
for (Type z : types)
System.out.print(", " + z.toString());
System.out.println( ") " + " -> " + y.getGenericReturnType().toString()); //*/
/*
//print parameter of the method
int i = 0;
for (; i < types.length-1; i++)
{
System.out.print(removeClassFromName (types[i].toString()) + ", ");
}
if (types.length > 0) //print last parameter
{
System.out.print(removeClassFromName(types[i].toString()));
//print return type
System.out.println( " ) " + " -> " + removeClassFromName(y.getGenericReturnType().toString()));
} */
}
}
在我运行代码后,它输出的代码如下,它没有正确打印出类型。我应该如何修复并正确输出?
bar(int, double, char) -> int
doo() -> 双
foo(int, double) -> void
每次我重新编译并运行它时,输出都有不同的顺序。
最佳答案
@Zoe 正如 @Sami Sarraj 所说,你的代码正在做应该做的事情。
关于顺序,不可能获取 getDeclaredMethods() 调用编写的顺序,如您所见 here 。
关于获取参数名称你可以找到提示here .
关于java - 如何正确打印参数名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47624831/