很熟悉的示例吧!熟悉一下反射机制以及reflect的SDK
public class ViewClassInfoFrame extends JFrame implements ActionListener{ JTextField classnameField = new JTextField(); JButton viewinfoButton = new JButton(); JLabel hintLabel = new JLabel(); JTextArea infoTextArea = new JTextArea(); JScrollPane infoScrollPane = new JScrollPane(); TitledBorder titledBorder; JPanel upPanel = new JPanel(); JPanel centerPanel = new JPanel(); BorderLayout mainFrameBorderLayout = new BorderLayout(); BorderLayout centerPanelBorderLayout = new BorderLayout(); BorderLayout upPanelBorderLayout = new BorderLayout(); /** 构造函数 */ public ViewClassInfoFrame() { enableEvents(AWTEvent.WINDOW_EVENT_MASK); init(); validate(); } /**初始化窗口*/ private void init(){ classnameField.setFont(new Font("Dialog",0,15)); classnameField.setSelectedTextColor(Color.white); classnameField.setText(""); viewinfoButton.setFont(new Font("Dialog",0,13)); viewinfoButton.setText("查看类详细信息"); viewinfoButton.addActionListener(this); hintLabel.setFont(new Font("Dialog",0,13)); hintLabel.setText("类路径"); infoTextArea.setFont(new Font("Dialog",0,14)); infoTextArea.setEditable(false); infoTextArea.setText(""); titledBorder = new TitledBorder(BorderFactory.createEtchedBorder(Color.white,new Color(134,134,134)),"结果信息"); infoScrollPane.setBorder(titledBorder); infoScrollPane.getViewport().add(infoTextArea,null); upPanel.setLayout(upPanelBorderLayout); centerPanel.setLayout(centerPanelBorderLayout); upPanel.add(hintLabel,BorderLayout.NORTH); upPanel.add(classnameField,BorderLayout.CENTER); upPanel.add(viewinfoButton,BorderLayout.SOUTH); centerPanel.add(infoScrollPane); this.getContentPane().setLayout(mainFrameBorderLayout); this.setSize(new Dimension(450,360)); this.setTitle("使用反射机制查看类信息"); this.getContentPane().add(upPanel,BorderLayout.NORTH); this.getContentPane().add(centerPanel,BorderLayout.CENTER); this.getRootPane().setDefaultButton(viewinfoButton); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public void actionPerformed(ActionEvent e) { String classname = classnameField.getText(); StringBuffer buffer = new StringBuffer(); try { //动态加载类 获取类对象 Class c = Class.forName(classname); buffer.append("/**类声明**/ \n"); buffer.append(getClassStatement(c)); buffer.append("\n"); buffer.append("/**字段**/"); buffer.append(getFields(c)); buffer.append("/**构造函数**/"); buffer.append(getConstructors(c)); buffer.append("/**方法**/"); buffer.append(getMethods(c)); buffer.append("} \n"); } catch (Exception e1) { JOptionPane.showMessageDialog(this, "没有找到类:" + e1.getMessage()); } infoTextArea.setText(buffer.toString()); } public String getClassStatement(Class c){ StringBuffer buffer = new StringBuffer(); if(c.getName().equals("java.lang.object")){ buffer.append("public class Ojbect{"); return buffer.toString(); }else { String supername = c.getSuperclass().getName(); buffer.append("public class").append(c.getName()); buffer.append("extends").append(supername).append(";"); } return buffer.toString(); } /** * 获取类的属性 * @param c * @return */ public String getFields(Class c){ StringBuffer buffer = new StringBuffer(); Field field = null; Field [] fields = c.getFields(); for (int i = 0; i < fields.length; i++) { field = fields[i]; buffer.append(Modifier.toString(field.getModifiers())).append(" "); Class type = field.getType(); buffer.append(type.getName()).append(" "); buffer.append(field.getName()).append(";\n");//获取属性名 } return buffer.toString(); } /** * 获取类的构造方法 * @param c * @return String */ public String getConstructors(Class c){ StringBuffer buffer = new StringBuffer(); Constructor [] constructors = c.getDeclaredConstructors(); Constructor constructor = null; for (int i = 0; i < constructors.length; i++) { constructor = constructors[i]; buffer.append(Modifier.toString(constructor.getModifiers())).append(" "); buffer.append(constructor.getName()).append("("); //获取参数类型 Class[] paramsTypes= constructor.getParameterTypes(); Class class1= null; for (int j = 0; j < paramsTypes.length; j++) { class1 = paramsTypes[j]; if (j==(paramsTypes.length-1)) { buffer.append(class1.getName()); }else { buffer.append(class1.getName()).append(","); } } buffer.append(")"); //获取方法声明的异常 Class[] exceTypes = constructor.getExceptionTypes(); for (int j = 0; j < exceTypes.length; j++) { class1 = exceTypes[j]; if (j==0) { buffer.append("throws"); } if(j==(exceTypes.length-1)){ buffer.append(class1.getName()); } else { buffer.append(class1.getName()).append(", "); } } buffer.append("\n"); } return buffer.toString(); } /** * 获取类的方法 * @param c * @return String */ public String getMethods(Class c){ StringBuffer buffer = new StringBuffer(); Method[] methods= c.getMethods(); Method method = null; for (int i = 0; i < methods.length; i++) { method = methods[i]; buffer.append(Modifier.toString(method.getModifiers())).append(" "); Class returnType = method.getReturnType(); buffer.append(returnType.getName()).append(" "); buffer.append(method.getName()).append("("); //获取方法参数 Class[] paramTypes =method.getParameterTypes(); Class class1 = null; for (int j = 0; j < paramTypes.length; j++) { class1 = paramTypes[j]; if (j==(paramTypes.length-1)) { buffer.append(class1.getName()); } else { buffer.append(class1.getName()).append(", "); } } buffer.append(")"); //获取方法声明的异常 Class[] exceTypes = method.getExceptionTypes(); for (int j = 0; j < exceTypes.length; j++) { class1 = exceTypes[j]; if (j==0) { buffer.append("throws"); } if(j==(exceTypes.length-1)){ buffer.append(class1.getName()); } else { buffer.append(class1.getName()).append(", "); } } buffer.append("\n"); } return buffer.toString(); } /** * @param args */ public static void main(String[] args) { try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (Exception e) { e.printStackTrace(); } ViewClassInfoFrame frame = new ViewClassInfoFrame(); Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); Dimension frameSize = frame.getSize(); if (frameSize.height>screenSize.height) { frameSize.height= screenSize.height; } if (frameSize.width>screenSize.width) { frameSize.width= screenSize.width; } frame.setLocation((screenSize.width-frameSize.width)/2, (screenSize.height-frameSize.height)/2); frame.setVisible(true); } }