码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2018-01-08 23:44:35      阅读:272      评论:0      收藏:0      [点我收藏+]

标签:sys   parameter   传递   etc   .com   ssd   declared   com   object   

获取成员变量信息

代码及说明:

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反射--获取成员变量信息

标签:sys   parameter   传递   etc   .com   ssd   declared   com   object   

原文地址:https://www.cnblogs.com/alsf/p/8245423.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!