package com.imooc.reflect;
import java.lang.reflect.Method;
public class ClassDemo3 {
public static void main(String[] args) {
String cString=new String();
printClassMessage(cString);
}
/**
* 列印類的資訊,包括類的成員函數
* @param obj
*/
public static void printClassMessage(Object obj){
//要擷取類的資訊首先要擷取類的類類型
Class c=obj.getClass();//傳遞的是哪個子類的對象,c就是該子類的類類型
System.out.println("類的名稱是"+c.getName());
/**
* Method類是方法的對象
* getMethods方法擷取的是所有public函數,包括父類內建而來的。
* getDeclaredMethods()擷取的是該類自己生命的方法,就是自己的,不分通路權限
*/
Method[] ms=c.getMethods();
for (int i = 0; i < ms.length; i++) {
//得到方法的傳回值類型的類類型
//得到方法的名稱
System.out.print("方法名:"+i+" "+ms[i].getName()+" ");
Class returnType=ms[i].getReturnType();
System.out.print("傳回值是:"+returnType.getSimpleName()+" ");
//擷取參數類型
Class[] returnTClasses=ms[i].getParameterTypes();
if (returnTClasses.length>0) {
System.out.print("傳入參數類型 ");
}
for (int j = 0; j < returnTClasses.length; j++) {
System.out.print(j+" :"+returnTClasses[j].getSimpleName()+" ");
}
System.out.println("");
}
c.getDeclaredMethods();
}
}