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();
}
}