版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/kangaroo_07/article/details/78057863
package com.reflect;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
/**
* 打印Class的构造、属性、方法
* @author lr
*
*/
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(");");
}
}
}
打印输出结果:
printFieldInfo start===========
1 private final char[] value;
2 private int hash;
3 private static final long serialVersionUID;
4 private static final ObjectStreamField[] serialPersistentFields;
5 public static final Comparator CASE_INSENSITIVE_ORDER;
printFieldInfo end=============
printMethodInfo start===========
1 public boolean(Object arg0);
2 public String();
3 public int();
4 public int(String arg0);
5 public volatile int(Object arg0);
6 public int(String arg0,int arg1);
7 public int(String arg0);
8 public int(int arg0,int arg1);
9 public int(int arg0);
10 static int(char[] arg0,int arg1,int arg2,char[] arg3,int arg4,int arg5,int arg6);
11 static int(char[] arg0,int arg1,int arg2,String arg3,int arg4);
12 public static String(int arg0);
13 public static String(long arg0);
14 public static String(float arg0);
15 public static String(boolean arg0);
16 public static String(char[] arg0);
17 public static String(char[] arg0,int arg1,int arg2);
18 public static String(Object arg0);
19 public static String(char arg0);
20 public static String(double arg0);
21 public char(int arg0);
22 private static void(byte[] arg0,int arg1,int arg2);
23 public int(int arg0);
24 public int(int arg0);
25 public int(int arg0,int arg1);
26 public int(String arg0);
27 public String(String arg0);
28 public boolean(CharSequence arg0);
29 public boolean(CharSequence arg0);
30 public boolean(StringBuffer arg0);
31 public static String(char[] arg0);
32 public static String(char[] arg0,int arg1,int arg2);
33 public boolean(String arg0);
34 public boolean(String arg0);
35 public static transient String(Locale arg0,String arg1,Object[] arg2);
36 public static transient String(String arg0,Object[] arg1);
37 public void(int arg0,int arg1,byte[] arg2,int arg3);
38 public byte[](Charset arg0);
39 public byte[](String arg0);
40 public byte[]();
41 public void(int arg0,int arg1,char[] arg2,int arg3);
42 void(char[] arg0,int arg1);
43 private int(int arg0,int arg1);
44 public native String();
45 public boolean();
46 public static transient String(CharSequence arg0,CharSequence[] arg1);
47 public static String(CharSequence arg0,Iterable arg1);
48 public int(int arg0);
49 public int(String arg0);
50 static int(char[] arg0,int arg1,int arg2,String arg3,int arg4);
51 public int(String arg0,int arg1);
52 public int(int arg0,int arg1);
53 static int(char[] arg0,int arg1,int arg2,char[] arg3,int arg4,int arg5,int arg6);
54 private int(int arg0,int arg1);
55 public int();
56 public boolean(String arg0);
57 private boolean(AbstractStringBuilder arg0);
58 public int(int arg0,int arg1);
59 public boolean(int arg0,String arg1,int arg2,int arg3);
60 public boolean(boolean arg0,int arg1,String arg2,int arg3,int arg4);
61 public String(char arg0,char arg1);
62 public String(CharSequence arg0,CharSequence arg1);
63 public String(String arg0,String arg1);
64 public String(String arg0,String arg1);
65 public String[](String arg0);
66 public String[](String arg0,int arg1);
67 public boolean(String arg0,int arg1);
68 public boolean(String arg0);
69 public CharSequence(int arg0,int arg1);
70 public String(int arg0);
71 public String(int arg0,int arg1);
72 public char[]();
73 public String(Locale arg0);
74 public String();
75 public String();
76 public String(Locale arg0);
77 public String();
printMethodInfo end===========
printConstructorInfo start===========
1 public String(byte[] arg0,int arg1,int arg2);
2 public String(byte[] arg0,Charset arg1);
3 public String(byte[] arg0,String arg1);
4 public String(byte[] arg0,int arg1,int arg2,Charset arg3);
5 public String(byte[] arg0,int arg1,int arg2,String arg3);
6 String(char[] arg0,boolean arg1);
7 public String(StringBuilder arg0);
8 public String(StringBuffer arg0);
9 public String(byte[] arg0);
10 public String(int[] arg0,int arg1,int arg2);
11 public String();
12 public String(char[] arg0);
13 public String(String arg0);
14 public String(char[] arg0,int arg1,int arg2);
15 public String(byte[] arg0,int arg1);
16 public String(byte[] arg0,int arg1,int arg2,int arg3);
printConstructorInfo end===========