成員屬性和構造方法皆為對象,通過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}