天天看點

類Introspector- -

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