• [javaSE] 反射-获取类的成员属性和构造方法


    成员属性和构造方法皆为对象,通过Class对象的方法可以得到

    package com.tsh.reflect;
    
    import java.lang.reflect.Constructor;
    import java.lang.reflect.Field;
    
    public class ReflectDemo {
        public static void main(String[] args) {
            printClassFields(new Integer(1));
            printClassConstructs(new String("ss"));
        }
        /**
         * 打印类的成员属性信息
         * @param obj
         */
        public static void printClassFields(Object obj){
            Class c=obj.getClass();
            System.out.println("类的名称:"+c.getName());
            System.out.println("类的成员属性:");
            Field[] fields=c.getDeclaredFields();
            for(Field field:fields){
                Class fieldClass=field.getType();
                String fieldName=field.getName();
                String fieldType=fieldClass.getSimpleName();
                System.out.println(fieldType+" "+fieldName);
            }
        }
        /**
         * 打印类的构造方法
         * @param obj
         */
        public static void printClassConstructs(Object obj){
            Class c=obj.getClass();
            System.out.println("类的名称:"+c.getName());
            System.out.println("类的构造方法:");
            Constructor[] constructors=c.getDeclaredConstructors();
            for(Constructor constructor : constructors){
                Class[] paClass=constructor.getParameterTypes();
                String name=constructor.getName();
                int i=0;
                String params=new String();
                for(Class param : paClass){
                    if(i==0){
                        params+=param.getSimpleName();
                    }else{
                        params+=","+param.getSimpleName();
                    }
                    i++;
                }
                System.out.println(name+"("+params+"}");
            }
        }
    }

    输出结果:

    类的名称:java.lang.Integer
    类的成员属性:
    int MIN_VALUE
    int MAX_VALUE
    Class TYPE
    char[] digits
    char[] DigitTens
    char[] DigitOnes
    int[] sizeTable
    int value
    int SIZE
    long serialVersionUID
    boolean $assertionsDisabled
    
    
    类的名称:java.lang.String
    类的构造方法:
    java.lang.String(byte[]}
    java.lang.String(byte[],int,int}
    java.lang.String(byte[],Charset}
    java.lang.String(byte[],String}
    java.lang.String(byte[],int,int,Charset}
    java.lang.String(int,int,char[]}
    java.lang.String(char[],boolean}
    java.lang.String(StringBuilder}
    java.lang.String(StringBuffer}
    java.lang.String(int[],int,int}
    java.lang.String(char[],int,int}
    java.lang.String(char[]}
    java.lang.String(String}
    java.lang.String(}
    java.lang.String(byte[],int,int,String}
    java.lang.String(byte[],int}
    java.lang.String(byte[],int,int,int}
  • 相关阅读:
    ssh无密码登录 及集群分发脚本
    Hbase安装及客户端测试及笔记
    Zookeeper 的分布式安装部署及客户端测试
    搭建hadoop-完全分布式模式
    虚拟机的linux没有mac地址
    servlet-Listener 的复习
    纯servlet 达到spring的自动装配
    JDBC的复习 和工具类总结
    C#中的弱事件(Weak Events in C#)
    WeakReference(弱引用)
  • 原文地址:https://www.cnblogs.com/taoshihan/p/5869931.html
Copyright © 2020-2023  润新知