首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

java 自我批评 使用

2013-12-26 
java 自省 使用import?javax.swing.*??import?java.awt.*??import?java.awt.event.*??import?java.bean

java 自省 使用

    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?????Student?beanObj?=?new?Student();?????//依据Bean产生一个相关的BeanInfo类?????BeanInfo?bInfoObject?=??????Introspector.getBeanInfo(beanObj.getClass(),beanObj.getClass().getSuperclass());?????//定义一个用于显示的字符串?????String?output?=?"";???????//开始自省????????/*????*?BeanInfo.getMethodDescriptors()????*?用于获取该Bean中的所有允许公开的成员方法,以MethodDescriptor数组的形式返回????*????*?MethodDescriptor类????*?用于记载一个成员方法的所有信息????*?MethodDescriptor.getName()????*?获得该方法的方法名字????*?MethodDescriptor.getMethod()????*?获得该方法的方法对象(Method类)????*????*?Method类????*?记载一个具体的的方法的所有信息????*?Method.getParameterTypes()????*?获得该方法所用到的所有参数,以Class数组的形式返回????*????*?Class..getName()????*?获得该类型的名字????*/?????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);????????/*????*?BeanInfo.getPropertyDescriptors()????*?用于获取该Bean中的所有允许公开的成员属性,以PropertyDescriptor数组的形式返回????*????*?PropertyDescriptor类????*?用于描述一个成员属性????*????*?PropertyDescriptor.getName()????*?获得该属性的名字????*????*?PropertyDescriptor.getPropertyType()????*?获得该属性的数据类型,以Class的形式给出????*????*/?????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);??????????/*????*?BeanInfo.getEventSetDescriptors()????*?用于获取该Bean中的所有允许公开的成员事件,以EventSetDescriptor数组的形式返回????*????*?EventSetDescriptor类????*?用于描述一个成员事件????*????*?EventSetDescriptor.getName()????*?获得该事件的名字????*????*?EventSetDescriptor.getListenerType()????*?获得该事件所依赖的事件监听器,以Class的形式给出????*????*/?????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();???}??}?

热点排行