美文网首页Java学习笔记
java实现输入类名打印出该类的所有构造器、方法和域

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

作者: 这是朕的江山 | 来源:发表于2016-05-27 16:40 被阅读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(");");        
    }    
 }
}

相关文章

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

  • 11.14

    java构造器 又称为 构造方法,constructor构造器用于构造该类的实例。 格式如下:[修饰符] 类名...

  • Swift-必要构造器

    必要构造器 在类的构造器前添加required修饰符表明所有该类的子类都必须实现该构造器: 在子类重写父类的必要构...

  • Java构造器(构造方法)与方法区别说明

    构造器,又称为构造方法。构造器用于构造该类的实例,也就是对象。 格式如下:[修饰符] 类名 (形参列表){//n条...

  • 类加载和初始化

    对象的创建过程 当首次创建某个类的对象时(构造器可看作静态方法),或者类的静态方法/静态域被访问时,Java解释器...

  • 对象的初始化过程

    一个对象在创建的过程中,通过调用该类的构造器实现初始化,如果该类有父类,则会先调用父类的构造器,初始化父类的类成员...

  • 构造器

    Java构造器是在创建对象时被自动调用的特殊方法,构造器的特点如下所示: 构造器的与类名具有完全相同的名称 不接受...

  • 浅拷贝和深拷贝 实现的几种方式

    浅拷贝 一、通过拷贝构造方法实现浅拷贝: 拷贝构造方法指的是该类的构造方法参数为该类的对象。使用拷贝构造方法可以很...

  • Java中的this

    this关键词 构造方法是创建Java对象的重要途径,通过new关键字调用构造器时,构造器也确实返回该类的对象,但...

  • java面向对象之构造方法

    构造函数(构造方法、构造器、Constructor) 关于java类的构造函数 1、构造方法语法【修饰符列表】构造...

网友评论

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

    本文链接:https://www.haomeiwen.com/subject/bchfdttx.html