Java学习笔记

java实现输入类名打印出该类的所有构造器、方法和域

2016-05-27  本文已影响431人  这是朕的江山
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.util.Scanner;
/** * Created by rail on 2016/5/27. */
public class reflectTest {    
public static void main(String[]args)   
 {       
    String name;       
    if(args.length>0)            
       name=args[0];       
    else        
{            
    Scanner in=new Scanner(System.in);           
    System.out.println("Enter class name");          
    name=in.next();       
 }        
    try {          
      Class cl=Class.forName(name);          
      Class supercl=cl.getSuperclass();            
      String modifiers= Modifier.toString(cl.getModifiers());                         
      if(modifiers.length()>0)               
          System.out.print(modifiers+" ");            
      System.out.print("class"+name);            
      if (supercl!=null&&supercl!=Object.class)                
          System.out.print(" extends "+supercl.getName());            
      System.out.print("\n{\n");          
      printConstructors(cl);            
      System.out.println();           
      printMethods(cl);           
      System.out.println();           
      printFields(cl);            
      System.out.print("}");       
 }        
catch (ClassNotFoundException e)
 {       
     e.printStackTrace();       
 }    
}    
public static void printFields(Class cl)
 {       
     Field[]fields=cl.getDeclaredFields();        
     for(Field f:fields)      
    {           
        Class type=f.getType();          
        String name=f.getName();          
        System.out.print("  ");          
        String modifiers=Modifier.toString(f.getModifiers());         
        if (modifiers.length()>0)              
              System.out.print(modifiers+" ");         
        System.out.println(type.getName()+" "+name+";");      
  }    
}    
public static void printMethods(Class cl) 
{        
    Method[]methods=cl.getDeclaredMethods();      
    for (Method m:methods)       
  {  
       Class retType=m.getReturnType();     
       String name=m.getName();           
       System.out.print("  ");            
       String modifiers=Modifier.toString(m.getModifiers());          
       if (modifiers.length()>0)              
           System.out.print(modifiers+" ");           
       System.out.print(retType.getName()+" "+name+"(");                  
       Class[]paramTypes=m.getParameterTypes();           
       for (int j=0;j<paramTypes.length;j++)            
    {       
         if(j>0)                    
             System.out.print(", ");               
         System.out.print(paramTypes[j].getName());           
    }           
       System.out.println(");");       
  }    
}   
 public static void printConstructors(Class cl)
 {        
        Constructor[]constructors=cl.getDeclaredConstructors();       
        for (Constructor c:constructors)      
    {            
        String name=c.getName();       
        System.out.print("  ");            
        String modifiers=Modifier.toString(c.getModifiers());      
        if (modifiers.length()>0)               
            System.out.print(modifiers+" ");            
        System.out.print(name+"(");           
        Class[]paramTypes=c.getParameterTypes();           
        for (int j=0;j<paramTypes.length;j++)           
      {               
                if(j>0)                    
                    System.out.print(", ");                
                System.out.print(paramTypes[j].getName());           
       }            
         System.out.println(");");        
    }    
 }
}
上一篇 下一篇

猜你喜欢

热点阅读