java反射--获取成员变量信息

Posted 美好的明天

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java反射--获取成员变量信息相关的知识,希望对你有一定的参考价值。

获取成员变量信息

代码及说明:

public static void printFieldMessage(Object obj)
    {
        //要获取类的信息,首先要获取类的类类型
        Class c=obj.getClass();    //传递的是哪个子类的对象,c就是该子类的类类型。
        //获取类的名称
        System.out.println("类的名称是"+c.getName());
        /*
         * 成员变量也是对象
         * java.lang.reflect.Field
         * Field类封装了关于成员变量的操作
         * getFields()方法获取的是所有的public的成员变量 
         * getDeclaredFields()获取的是该类自己声明的成员变量的信息
         * */
        Field[] fs=c.getDeclaredFields();
        for (Field field : fs) {
        
            //得到成员变量的类型的类类型
            Class fieldType=field.getType();
            String typeName=fieldType.getName();
            //得到成员变量的名称
            String fieldName=field.getName();
            
            System.out.println("成员变量:"+typeName+" "+fieldName);
        }
    }

调用该方法:

package com.reflect;

public class ClassDemo2 {

    public static void main(String[] args) {

        String s="hello";
        //ClassUtill.printClassMessage(s);
        Word w=new Word();
        ClassUtill.printFieldMessage(w);
    }
}

运行结果:

获取构造函数信息

代码及说明:

/*打印对象的构造函数信息*/
    public static void printConMessage(Object obj)
    {
        Class c=obj.getClass();
        /*
         * 构造函数也是对象
         * java.lang.Constrctor 中封装了构造函数的信息
         * */
        //Constructor[] cs=c.getConstructors();
        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(")");
        }
    }

调用:

package com.reflect;

public class ClassDemo2 {

    public static void main(String[] args) {

        String s="hello";
        //ClassUtill.printClassMessage(s);
        Word w=new Word();
        //ClassUtill.printFieldMessage(w);
        ClassUtill.printConMessage("hello");
    }
}

结果:

 

以上是关于java反射--获取成员变量信息的主要内容,如果未能解决你的问题,请参考以下文章

Java使用反射来获取成员变量泛型信息

JAVA-反射-构造器方法成员变量

十六反射

Java反射机制详解

[Java基础]反射获取成员变量并使用

Java+反射1+获取属性/成员变量 的名称及类型