package com.akathink.reflect;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
public class ClassUtil {
* 打印对象的字段信息
*
* @param object
*/
public static void printFieldMsg(Object object) {
System.out.println("\n\n下面打印的是对象的 字段 信息:\n");
Class clazz = object.getClass();
* 成员变量也是对象
*
* java.lang.reflect.Field
*
* Field类封装了关于成员变量的操作
*
* getFields()获取的是所有的Public的成员变量的信息
*
* getDeclaredFields()获取的是该类自己声明的变量的信息
*
*/
Field[] fields = clazz.getDeclaredFields();
for (Field field : fields) {
Class fieldType = field.getType();
String typeName = fieldType.getName();
String fieldName = field.getName();
System.out.println(typeName + " " + fieldName);
}
}
* 打印对象的构造函数的信息
*
* @param object
*/
public static void printConstructorMsg(Object object) {
System.out.println("\n下面打印的是对象的 构造方法 信息:\n");
Class clazz = object.getClass();
* 构造函数也是对象
*
* java.lang.reflect.Constructor
*
* getConstructors()获取的是该类的所有public方法
*
* getDeclaredConstructors()获取的是该对象自己声明的构造方法
*/
Constructor[] constructors = clazz.getDeclaredConstructors();
for (Constructor constructor : constructors) {
System.out.print(constructor.getName() + "(");
Class[] paramTypes = constructor.getParameterTypes();
for (Class paramClazz : paramTypes) {
System.out.print(paramClazz.getName()+ " , " );
}
System.out.println(")");
}
}
* 打印对象的方法信息
*
* @param object
*/
public static void printMethodMsg(Object object) {
System.out.println("\n下面打印的是对象的 方法 信息:\n");
Class clazz = object.getClass();
System.out.println("类的名称是:" + clazz.getName());
* Method类,方法对象
*
* java.lang.reflect.Method
*
* 一个成员方法就是一个Method对象
*
* getMethods()方法获取的就是该class or interface 的所有的public的方法,包括父类继承的方法。
*
* getDeclaredMethods()获取的是该class or interface 自己声明的方法,不问访问权限。
*/
Method[] methods = clazz.getDeclaredMethods();
for (Method method : methods) {
Class returnType = method.getReturnType();
System.out.print(returnType.getName() + " ");
System.out.print(method.getName() + "(");
Class[] paramTypes = method.getParameterTypes();
for (Class paramClazz : paramTypes) {
System.out.print(paramClazz.getName() + " , ");
}
System.out.println(")");
}
}
}