• 打印一个类全部信息的方法


    package chapter3Demos;
    
    import java.lang.reflect.Method;
    import java.util.Scanner;
    import java.lang.reflect.*;
    
    import source.Superman;
    
    public class Demo3_3_2 {
    
        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 anem(e.g. java.util.Date):");
                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.println("
    {
    ");
                printConstructors(cl);
                System.out.println();
                printMethods(cl);
                System.out.println();
                printFields(cl);
                System.out.println("}");
             }catch(ClassNotFoundException e) {
                 e.printStackTrace();
             }
            System.exit(0);
        }
    
        private static void printFields(Class cl) {
            Field[] fields = cl.getDeclaredFields();
            
            for(Field f : fields) {
                System.out.print("  ");
                String modifiers = Modifier.toString(f.getModifiers());
                if (modifiers.length() > 0) {
                    System.out.print(modifiers + " ");
                }
                
                Class type = f.getType();
                String name = f.getName();
                System.out.println(type.getName() + " " + name + ";");
            }
            
        }
    
        private static void printMethods(Class cl) {
            Method[] methods = cl.getDeclaredMethods();
            
            for(Method m : methods) {
                Class retType = m.getReturnType();
                String name = m.getName();
                
                System.out.print("  ");
                //print modifiers, return type and method name
                String modifiers = Modifier.toString(m.getModifiers());
                if(modifiers.length() > 0) {
                    System.out.print(modifiers + " ");
                }
                System.out.print(retType.getName() + " " + name + "(");
                //print parameter types
                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(");");
            }
            
        }
    
        private 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 + " ");
                
                //print parameter types
                Class[] paramTypes = c.getParameterTypes();
                for (int i = 0; i < paramTypes.length; i++) {
                    if(i > 0) System.out.print(", ");
                    System.out.print(paramTypes[i].getName());
                }
                System.out.println(");");
            }
            
        }
    }

    输入java.lang.Double

    将得到

    public final classjava.lang.Doubleextendsjava.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 int hashCode(double);
      public static double min(double, double);
      public static double max(double, double);
      public static native long doubleToRawLongBits(double);
      public static long doubleToLongBits(double);
      public static native double longBitsToDouble(long);
      public volatile int compareTo(java.lang.Object);
      public int compareTo(java.lang.Double);
      public byte byteValue();
      public short shortValue();
      public int intValue();
      public long longValue();
      public float floatValue();
      public double doubleValue();
      public static java.lang.Double valueOf(java.lang.String);
      public static java.lang.Double valueOf(double);
      public static java.lang.String toHexString(double);
      public static int compare(double, double);
      public static boolean isNaN(double);
      public boolean isNaN();
      public static boolean isFinite(double);
      public static boolean isInfinite(double);
      public boolean isInfinite();
      public static double sum(double, double);
      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 int BYTES;
      public static final java.lang.Class TYPE;
      private final double value;
      private static final long serialVersionUID;
    }
  • 相关阅读:
    vue项目中实现定时刷新页面(重新渲染数据实时更新)
    如何撤销 Git commit ?
    error: You have not concluded your merge (MERGE_HEAD exists)
    ajax的前世今生
    DevTools failed to load SourceMap: Could not load content for webpack:///node_modules/sockjs-client/
    Vue 项目如何配置代理解决跨域
    Nginx 到底是什么东西?
    JSON.parse()与JSON.stringify()的区别
    uni-app 中如何管理用户登录状态
    Oracle分析函数简析
  • 原文地址:https://www.cnblogs.com/Joey777210/p/11773464.html
Copyright © 2020-2023  润新知