• 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");
        }
    }

    结果:

  • 相关阅读:
    ARP:地址解析协议,RARP
    pip 安装psutil 报错 error: command 'gcc' failed with exit status 1
    linux shell 控制脚本
    linux shell 呈现数据
    linux shell 处理用户输入
    shell结构化命令
    centos7 安装配置 squid作为正向代理
    linux基本脚本
    linux文件权限
    模拟垃圾分布
  • 原文地址:https://www.cnblogs.com/alsf/p/8245423.html
Copyright © 2020-2023  润新知