4-1 Java 获取成员变量构造函数信息


public class ClassUtil {
    public static void printClassMethodMessage(Object obj){
        Class c = obj.getClass();

        System.out.println("类的名称是:"+c.getName());
        /**
         * getMethods 获取所有的public函数,包括父类继承来的方法
         * c.getDeClaredMethod  //获取该类自己声明的方法
         */
        Method[] ms = c.getMethods();
        for (int i=0;i<ms.length;i++){
            //得到方法返回值的类类型
            Class returnType = ms[i].getReturnType();
            System.out.print(returnType.getName()+" ");

            //得到方法的名称
            System.out.print(ms[i].getName()+"(");
            //获取参数类型
            Class[] paramTypes = ms[i].getParameterTypes();
            for (Class class1:paramTypes) {
                System.out.print(class1.getName()+",");
            }
            System.out.println(")");

            /**
             *成员变量也是对象
             * java.lang.reflect.Filed
             * Filed封装了关于成员变量的操作
             * getFileds() 方法获取public成员变量的信息
             * getDeclaredFiled() 获取自己声明的成员变量
             */
            printFieldMessage(c);
        }

    }

    public static void printFieldMessage(Object obj) {
        Class c= obj.getClass();
        Field[] fs = c.getDeclaredFields();
        for(Field field:fs){
            //获取 成员变量的类型的类类型
            Class fileType = field.getType();
            String typeName = fileType.getName();
            //得到成员变量的名称
            String fieldName = field.getName();
            System.out.println(typeName+" "+ fieldName);
        }
    }

    public static void printConMessage(Object obj){
        Class c = obj.getClass();
        Constructor[] cs = c.getDeclaredConstructors();
        for(Constructor constructor:cs){
            System.out.print(constructor.getName()+"(");
            Class[] paramTypes = constructor.getParameterTypes();
            for(Class class1:paramTypes){
                System.out.print(class1.getName()+",");
            }
            System.out.println(")");
        }
    }
}

public class ClassDemo4 {
    public static void main(String[] args) {
        ClassUtil.printFieldMessage("Hello");
        System.out.println("================");
        ClassUtil.printFieldMessage(new Integer(1));
        System.out.println("-----------------");
        ClassUtil.printConMessage("Hello");
        System.out.println("------Integer-----------");
        ClassUtil.printConMessage(new Integer(1));
    }
}

猜你喜欢

转载自blog.csdn.net/u012687612/article/details/110933712
4-1