[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}

 

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/industrynews/12622.html

(0)
上一篇 2021年7月19日 14:45
下一篇 2021年7月19日 14:45

相关推荐

发表回复

登录后才能评论