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}
  • 相关阅读:
    Smobiler 仿知乎APP个人主页
    smobiler仿自如app筛选页面
    Smobiler 仿美柚APP个人主页
    谈谈网络协议 – 物理层
    谈谈网络协议 – 路由
    谈谈网络协议 – 基础知识
    Flutter(三):Flutter App 可行性分析
    Flutter(二):编写第一个Flutter App
    Flutter(一):MAC的Flutter安装指南
    Jetpack新成员,Paging3从吐槽到真香
  • 原文地址:https://www.cnblogs.com/taoshihan/p/5869931.html
Copyright © 2011-2022 走看看