测试类:
public class Test {
public static void main(String[] args) {
ClassDemo3 classDemo3 = new ClassDemo3();
String string = "hello";
printClassMessage(string);
}
}
package classes;
import com.sun.org.apache.xpath.internal.SourceTree;
import java.lang.reflect.Method;
public class ClassDemo3 {
/*打印类的信息,包括成员变量,和方法*/
public static void printClassMessage(Object obj) {
//获取类的信息,首先要获得类的类类型
Class c = obj.getClass();//传递的是哪个子类对象,c就是盖子类的类类型
//获取类的名称
System.out.println("参数类的名称是: " + c.getName());
/*Method 类, 方法的对象, 一个成员变量方法就是一个Method对象
getMethods()方法获取的是所有的public方法,包括父类继承而来的
getDeclaredMethods() 获取的是所有该类自己声明的方法,不问访问权限*/
Method[] ms = c.getMethods();
for(Method m : ms){
//得到方法的返回值的类类型
Class returnType = m.getReturnType();
System.out.print("returnType : " + returnType.getName() + " <--");
//得到方法名
System.out.println("方法名:" + m.getName());
//获取参数类型
Class[] paramTypes = m.getParameterTypes();
for(Class classs : paramTypes){
System.out.println("参数列表中的参数类类型 : " + classs.getName());
}
}
}
}