[Java] java获取Class类的信息 →→→→→进入此内容的聊天室

来自 , 2021-01-26, 写在 Java, 查看 141 次.
URL http://www.code666.cn/view/6c340f25
  1. package com.google.reflect;
  2.  
  3. import java.lang.reflect.Field;
  4. import java.lang.reflect.Method;
  5. import java.lang.reflect.Modifier;
  6. import java.lang.reflect.Proxy;
  7. import java.util.ArrayList;
  8. import java.util.List;
  9.  
  10. public class AnalyticClassInfo
  11. {
  12.  
  13.     private static String getModifier(int modifier)
  14.     {
  15.         String result = "";
  16.         switch (modifier)
  17.         {
  18.         case Modifier.PRIVATE:
  19.             result = "private";
  20.             break;
  21.         case Modifier.PUBLIC:
  22.             result = "public";
  23.             break;
  24.         case Modifier.PROTECTED:
  25.             result = "protected";
  26.             break;
  27.         case Modifier.ABSTRACT:
  28.             result = "abstract";
  29.             break;
  30.         case Modifier.FINAL:
  31.             result = "final";
  32.             break;
  33.         case Modifier.NATIVE:
  34.             result = "native";
  35.             break;
  36.         case Modifier.STATIC:
  37.             result = "static";
  38.             break;
  39.         case Modifier.SYNCHRONIZED:
  40.             result = "synchronized";
  41.             break;
  42.         case Modifier.STRICT:
  43.             result = "strict";
  44.             break;
  45.         case Modifier.TRANSIENT:
  46.             result = "transient";
  47.             break;
  48.         case Modifier.VOLATILE:
  49.             result = "volatile";
  50.             break;
  51.         case Modifier.INTERFACE:
  52.             result = "interface";
  53.             break;
  54.         default:
  55.             break;
  56.         }
  57.         return result;
  58.     }
  59.  
  60.     private static void printClassDefinition(Class clz)
  61.     {
  62.         String clzModifier = getModifier(clz.getModifiers());
  63.         if (clzModifier != null && !clzModifier.equals(""))
  64.         {
  65.             clzModifier += "  ";
  66.         }
  67.  
  68.         String superClz = "";
  69.         if(clz.getSuperclass()!=null)
  70.         {
  71.             superClz = clz.getSuperclass().getName();
  72.             if (superClz != null && !superClz.equals(""))
  73.             {
  74.                 superClz = " extends " + superClz;
  75.             }
  76.         }
  77.  
  78.         Class[] interfaces = clz.getInterfaces();
  79.         String inters = "";
  80.         for (int i = 0; i < interfaces.length; i++)
  81.         {
  82.             if (i == 0)
  83.             {
  84.                 inters += " implements ";
  85.             }
  86.             inters += interfaces[i].getName();
  87.         }
  88.  
  89.         System.out.println(clzModifier + clz.getName() + " " + superClz + " "
  90.                 + inters);
  91.  
  92.         System.out.println("{");
  93.  
  94.         System.out.println("fields:");
  95.         Field[] fields = clz.getDeclaredFields();
  96.         for (int i = 0; i < fields.length; i++)
  97.         {
  98.             String modifier = getModifier(fields[i].getModifiers());
  99.             if (modifier != null && !modifier.equals(""))
  100.             {
  101.                 modifier = modifier + " ";
  102.             }
  103.             String fieldName = fields[i].getName();
  104.             String fieldType = fields[i].getType().getName();
  105.             System.out.println("    " + modifier + fieldType + " " + fieldName
  106.                     + ";");
  107.         }
  108.  
  109.         System.out.println("methods:");
  110.  
  111.         Method[] methods = clz.getDeclaredMethods();
  112.         for (int i = 0; i < methods.length; i++)
  113.         {
  114.             Method method = methods[i];
  115.  
  116.             String modifier = getModifier(method.getModifiers());
  117.             if (modifier != null && !modifier.equals(""))
  118.             {
  119.                 modifier = modifier + " ";
  120.             }
  121.  
  122.             String methodName = method.getName();
  123.  
  124.             Class returnClz = method.getReturnType();
  125.             String retrunType = returnClz.getName();
  126.  
  127.             Class[] clzs = method.getParameterTypes();
  128.             String paraList = "(";
  129.             for (int j = 0; j < clzs.length; j++)
  130.             {
  131.                 paraList += clzs[j].getName();
  132.                 if (j != clzs.length - 1)
  133.                 {
  134.                     paraList += ", ";
  135.                 }
  136.             }
  137.             paraList += ")";
  138.  
  139.             clzs = method.getExceptionTypes();
  140.             String exceptions = "";
  141.             for (int j = 0; j < clzs.length; j++)
  142.             {
  143.                 if (j == 0)
  144.                 {
  145.                     exceptions += "throws ";
  146.                 }
  147.  
  148.                 exceptions += clzs[j].getName();
  149.  
  150.                 if (j != clzs.length - 1)
  151.                 {
  152.                     exceptions += ", ";
  153.                 }
  154.             }
  155.  
  156.             exceptions += ";";
  157.  
  158.             String methodPrototype = modifier + retrunType + " " + methodName
  159.                     + paraList + exceptions;
  160.  
  161.             System.out.println("    " + methodPrototype);
  162.  
  163.         }
  164.         System.out.println("}");
  165.     }
  166.  
  167.     /**
  168.      * @param args
  169.      */
  170.     public static void main(String[] args)
  171.     {
  172.         // TODO Auto-generated method stub
  173.  
  174. //      printClassDefinition(List.class);
  175. //      printClassDefinition(Proxy.class);
  176.         printClassDefinition(ArrayList.class);
  177.     }
  178.  
  179. }
  180.  
  181. //源代码片段来自云代码http://yuncode.net
  182.                        

回复 "java获取Class类的信息"

这儿你可以回复上面这条便签

captcha