One - One Code All

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(");");
            
        }
    }
 
}



上一篇:vim 删除一整块,vim 删除一整行
下一篇:vim跳转到指定的行

The minute you think of giving up, think of the reason why you held on so long.