[Java] Java 反射 →→→→→进入此内容的聊天室

来自 , 2020-04-14, 写在 Java, 查看 135 次.
URL http://www.code666.cn/view/a3fb4fbf
  1. package com.reflect;
  2.  
  3. import java.lang.reflect.Constructor;
  4. import java.lang.reflect.Field;
  5. import java.lang.reflect.Method;
  6. import java.lang.reflect.Modifier;
  7.  
  8. import javax.swing.JFrame;
  9. import javax.swing.JOptionPane;
  10. import javax.swing.JTextArea;
  11.  
  12. /**
  13.  *
  14.  * This program uses reflection to all information of a class
  15.  *
  16.  * @version 2014-7-1
  17.  *
  18.  */
  19.  
  20. @SuppressWarnings("rawtypes")
  21. public class Reflect {
  22.  
  23.         private JTextArea textArea;
  24.         private JFrame frame;
  25.  
  26.         public void link_frame(Reflect_UI frame) {
  27.                 this.frame = frame;
  28.                 this.textArea = frame.getTextArea();
  29.         }
  30.  
  31.         public void EnterClassName(String className) {
  32.                 try {
  33.                         Class c = Class.forName(className);
  34.  
  35.                         printClass(c);
  36.  
  37.                         textArea.append("\n{\n");
  38.  
  39.                         textArea.append("\n// fields\n");
  40.                         printFields(c);
  41.  
  42.                         textArea.append("\n// constructors\n");
  43.                         printConstructors(c);
  44.  
  45.                         textArea.append("\n//methods \n");
  46.                         printMethods(c);
  47.  
  48.                         textArea.append("\n}\n");
  49.                 } catch (ClassNotFoundException e) {
  50.                         e.printStackTrace();
  51.                         JOptionPane.showMessageDialog(frame, "ClassNotFoundException");
  52.                 }
  53.  
  54.         }
  55.  
  56.         // print Class
  57.         private void printClass(Class c) {
  58.  
  59.                 Class superC = c.getSuperclass();
  60.  
  61.                 // print modifiers of class
  62.                 textArea.append(Modifier.toString(c.getModifiers()) + " " + "class ");
  63.                 textArea.append(c.getName() + " ");
  64.  
  65.                 // "superC!=null" 对于Object类
  66.                 if (superC != null && superC != Object.class) {
  67.                         textArea.append("extends " + superC.getName());
  68.                 }
  69.  
  70.         }
  71.  
  72.         // print DeclaredFields
  73.         private void printFields(Class c) {
  74.                 Field[] fields = c.getDeclaredFields();
  75.  
  76.                 for (Field f : fields) {
  77.  
  78.                         textArea.append(Modifier.toString(f.getModifiers()) + " "
  79.                                         + f.getType().getName() + " " + f.getName() + "\n");
  80.                 }
  81.         }
  82.  
  83.         // print DeclaredConstructors
  84.         private void printConstructors(Class c) {
  85.                 Constructor[] constructors = c.getDeclaredConstructors();
  86.  
  87.                 for (Constructor con : constructors) {
  88.  
  89.                         textArea.append(Modifier.toString(con.getModifiers()) + " "
  90.                                         + con.getName() + " (");
  91.                         int i = 0;
  92.                         for (Class par : con.getParameterTypes()) {
  93.                                 if (i > 0)
  94.                                         textArea.append(", ");
  95.                                 textArea.append(par.getTypeName());
  96.                                 i++;
  97.                         }
  98.                         textArea.append(")\n");
  99.                 }
  100.         }
  101.  
  102.         // print DeclaredMethods
  103.         private void printMethods(Class c) {
  104.                 Method[] methods = c.getDeclaredMethods();
  105.  
  106.                 for (Method m : methods) {
  107.  
  108.                         textArea.append(Modifier.toString(m.getModifiers()) + " "
  109.                                         + m.getReturnType().getName() + " " + m.getName() + " (");
  110.  
  111.                         int i = 0;
  112.                         for (Class par : m.getParameterTypes()) {
  113.                                 if (i > 0)
  114.                                         textArea.append(", ");
  115.                                 textArea.append(par.getTypeName());
  116.                                 i++;
  117.                         }
  118.  
  119.                         textArea.append(")\n");
  120.                 }
  121.  
  122.         }
  123.  
  124. }
  125. //源代码片段来自云代码http://yuncode.net
  126.                        

回复 "Java 反射"

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

captcha