集册 Java实例教程 使用反射从构造函数获取参数类型

使用反射从构造函数获取参数类型

欢马劈雪     最近更新时间:2020-01-02 10:19:05

561
使用反射从构造函数获取参数类型

import java.lang.reflect.Constructor;

import java.lang.reflect.Type;

import static java.lang.System.out;

/**
 from
* n o w j a v a . c o m - 时  代  Java 
**/

public class ConstructorSift {

    public static void main(String... args) {

        try {

            Class<?> cArg = Class.forName(args[1]);


            Class<?> c = Class.forName(args[0]);

            Constructor[] allConstructors = c.getDeclaredConstructors();

            for (Constructor ctor : allConstructors) {

                Class<?>[] pType = ctor.getParameterTypes();

                for (int i = 0; i < pType.length; i++) {/*from 时代Java*/

                    if (pType[i].equals(cArg)) {

                        out.format("%s%n", ctor.toGenericString());


                        Type[] gpType = ctor.getGenericParameterTypes();

                        for (int j = 0; j < gpType.length; j++) {

                            char ch = (pType[j].equals(cArg) ? '*' : ' ');

                            out.format("%7c%s[%d]: %s%n", ch,

                                    "GenericParameterType", j, gpType[j]);

                        }

                        break;

                    }

                }

            }


            // production code should handle this exception more gracefully

        } catch (ClassNotFoundException x) {

            x.printStackTrace();

        }

    }

}


展开阅读全文