zoukankan      html  css  js  c++  java
  • [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}
  • 相关阅读:
    基本算法2
    基本算法
    读书笔记 《跟老齐学python》
    python杂记 20200207 离线安装 正则
    傻傻分不清之 Cookie、Session、Token、JWT 转载:https://juejin.im/post/5e055d9ef265da33997a42cc
    并发相关 杂记
    原根
    POJ2749 Building roads
    luogu P4735 最大异或和
    SP913 QTREE2
  • 原文地址:https://www.cnblogs.com/taoshihan/p/5869931.html
Copyright © 2011-2022 走看看