程序清单-打印一个类的全部信息

来源:互联网 发布:mac启动windows 编辑:程序博客网 时间:2024/05/22 00:51

这个程序将提醒用户输入类名,然后输入类中所有方法和构造器的签名,以及全部域名。
如:

请输入类名:java.lang.Doublepublic final  class java.lang.Double extends java.lang.Number{   public    java.lang.Double(double);   public    java.lang.Double(java.lang.String);   public    boolean equals(java.lang.Object);   public static    java.lang.String toString(double);   public    java.lang.String toString();   public    int hashCode();   public static native    long doubleToRawLongBits(double);   public static    long doubleToLongBits(double);   public static native    double longBitsToDouble(long);   public    int compareTo(java.lang.Double);   public volatile    int compareTo(java.lang.Object);   public    byte byteValue();   public    short shortValue();   public    int intValue();   public    long longValue();   public    float floatValue();   public    double doubleValue();   public static    java.lang.Double valueOf(double);   public static    java.lang.Double valueOf(java.lang.String);   public static    java.lang.String toHexString(double);   public static    int compare(double,  double);   public static    boolean isNaN(double);   public    boolean isNaN();   public static    boolean isInfinite(double);   public    boolean isInfinite();   public static    double parseDouble(java.lang.String);public static final    double POSITIVE_INFINITY;   public static final    double NEGATIVE_INFINITY;   public static final    double NaN;   public static final    double MAX_VALUE;   public static final    double MIN_NORMAL;   public static final    double MIN_VALUE;   public static final    int MAX_EXPONENT;   public static final    int MIN_EXPONENT;   public static final    int SIZE;   public static final    java.lang.Class TYPE;   private final    double value;   private static final    long serialVersionUID;}

程序源代码:

public class ReflectionTest {    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("请输入类名:");            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.println("}");        } catch (ClassNotFoundException e) {            e.printStackTrace();        }    }    /**     * 输出构造函数     * @param cl     */    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(");");        }    }    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 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+";");        }    }}
阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 天祝旅游景点大全 天祝歌曲 天祝房产 天祝租房 御天神皇 诸天神魔种 九天神龙诀 吞天神帝 通天神帝 别天神 逆天神手 战天神皇 逆天神 天神禁条 司天神女录 天神卡 天神 属性天神 巡游天神 逆天神帝 天神绝 傲天神帝 战天神帝 天神劫 天神组 惊天神帝 诛天神帝 逆天神决 诸天神主 天神訣 天神纪 天神互动 天神娱乐棋牌 九天神皇叶之凡 诸天神龙系统 九天神皇全文阅读免费 九天神皇全文阅读 逆天神妃至上 御天神皇苏夜 九天神皇更新 逆天神豪系统