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

编程爱好者联盟 2018-12-15

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

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

; ; ; ; ; ; ; ;}

; ; ; ;}

}</pre> ; ;

输出结果:

; ;<pre>类的名称: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}</pre> ; ;

相关推荐