java - 如何正确打印参数名称?

标签 java reflection

输出应如下所示:

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/

相关文章:

java - 如何使用 Java 列出版本化存储桶中的 AWS S3 对象和版本

java - 除非插入 Toast 行,否则应用程序中的奇怪行为不会播放声音

java - iText Pdf 页面字节大小

.net - GetCustomAttributes() 是否保留 .NET 中的属性顺序?

java - 怎么知道Field是数组? Java 中的 (java.lang.reflect.Field)

c# - 如何确定给定类型 (System.Type) 是否继承自特定基类(在 .Net 中)?

java - 三星盖乐世 S8+ : Device Metrics Gives wrong device screen pixel density

c# - 序列化/反序列化和非默认构造函数

C# 反射 GetType() 异常

java - 逐字获取EditText值