[javaSE] 反射-获取类的成员属性和构造方法
成员属性和构造方法皆为对象,通过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> ; ;