Blog Content
java反射打印Class的构造、属性、方法
Java
2008-02-09 23:18:37
package com.reflect;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
/**
* 打印Class的构造、属性、方法
*
*/
public class Demo3 {
public static void main(String[] args) throws ClassNotFoundException {
System.out.println("printFieldInfo start===========");
printFieldInfo("hello");
System.out.println("printFieldInfo end=============");
System.out.println("printMethodInfo start===========");
printMethodInfo("hello");
System.out.println("printMethodInfo end===========");
System.out.println("printConstructorInfo start===========");
printConstructorInfo("hello");
System.out.println("printConstructorInfo end===========");
}
public static void printFieldInfo(Object o){
Class> clazz = o.getClass();
Field[] declaredFields = clazz.getDeclaredFields();
for (int i = 0; i < declaredFields.length; i++) {
Field field = declaredFields[i];
System.out.print((i+1)+" ");
System.out.print(Modifier.toString(field.getModifiers())+" ");
System.out.print(field.getType().getSimpleName()+" ");
System.out.print(field.getName());
System.out.println(";");
}
}
public static void printMethodInfo(Object o){
Class> clazz = o.getClass();
Method[] declaredMethods = clazz.getDeclaredMethods();
for (int i = 0; i < declaredMethods.length; i++) {
Method method = declaredMethods[i];
System.out.print((i+1)+" ");
System.out.print(Modifier.toString(method.getModifiers())+" ");
System.out.print(method.getReturnType().getSimpleName());
System.out.print("(");
Class>[] parameterTypes = method.getParameterTypes();
for (int j = 0; j < parameterTypes.length; j++) {
Class> parameterType =parameterTypes[j];
if(j==parameterTypes.length-1){
System.out.print(parameterType.getSimpleName()+" arg"+j);
}else{
System.out.print(parameterType.getSimpleName()+" arg"+j+",");
}
}
System.out.println(");");
}
}
public static void printConstructorInfo(Object o){
Class> clazz = o.getClass();
Constructor>[] declaredConstructors = clazz.getDeclaredConstructors();
for (int i = 0; i < declaredConstructors.length; i++) {
Constructor> constructor = declaredConstructors[i];
System.out.print((i+1)+" ");
System.out.print(Modifier.toString(constructor.getModifiers())+" ");
System.out.print(clazz.getSimpleName());
System.out.print("(");
Class>[] parameterTypes = constructor.getParameterTypes();
for (int j = 0; j < parameterTypes.length; j++) {
Class> parameterType =parameterTypes[j];
if(j==parameterTypes.length-1){
System.out.print(parameterType.getSimpleName()+" arg"+j);
}else{
System.out.print(parameterType.getSimpleName()+" arg"+j+",");
}
}
System.out.println(");");
}
}
}
上一篇:java赋值数字+d的含义(100d)
下一篇:java格式化输出System.out.format()