java 反射(三) 打印Class的构造、属性、方法

版权声明:本文为博主原创文章,未经博主允许不得转载。 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===========


猜你喜欢

转载自blog.csdn.net/kangaroo_07/article/details/78057863