import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.beans.*; import java.io.*; import java.lang.reflect.Method; public class myBeanIntrospector { public myBeanIntrospector() { try { //執行個體化一個Bean Test2 beanObj = new Test2(); //依據Bean産生一個相關的BeanInfo類 BeanInfo bInfoObject = Introspector.getBeanInfo(beanObj.getClass(),beanObj.getClass().getSuperclass()); //定義一個用于顯示的字元串 String output = ""; //開始自省 output = "内省成員方法:/n"; MethodDescriptor[] mDescArray = bInfoObject.getMethodDescriptors(); for (int i=0;i<mDescArray.length ;i++ ) { //獲得一個成員方法描述器所代表的方法的名字 String methodName = mDescArray[i].getName(); String methodParams = new String(); //獲得該方法對象 Method methodObj = mDescArray[i].getMethod(); //通過方法對象獲得該方法的所有參數,以Class數組的形式傳回 Class[] parameters = methodObj.getParameterTypes(); if (parameters.length>0) { //獲得參數的類型的名字 methodParams = parameters[0].getName(); for (int j=1;j<parameters.length ;j++ ) { methodParams = methodParams + "," + parameters[j].getName(); } } output += methodName + "(" + methodParams + ")/n"; } System.out.println(output); output = "内省成員屬性:/n"; PropertyDescriptor[] mPropertyArray = bInfoObject.getPropertyDescriptors(); for (int i=0;i<mPropertyArray.length ;i++ ) { String propertyName = mPropertyArray[i].getName(); Class propertyType = mPropertyArray[i].getPropertyType(); output += propertyName + " ( " + propertyType.getName() + " )/n"; } System.out.println(output); output = "内省綁定事件:/n"; EventSetDescriptor[] mEventArray = bInfoObject.getEventSetDescriptors(); for (int i=0;i<mEventArray.length ;i++ ) { String EventName = mEventArray[i].getName(); Class listenerType = mEventArray[i].getListenerType(); output += EventName + "(" + listenerType.getName() + ")/n"; } System.out.println(output); System.out.println("write by esonghui :)"); } catch (Exception e) { System.out.println("異常:" + e); } } public static void main(String[] args) { new myBeanIntrospector(); } } from:http://fanglulu.51.net/java/javacode/myBeanIntrospector.java