类Introspector的使用,自省

类Introspector的使用
  1. importjavax.swing.*;
  2. importjava.awt.*;
  3. importjava.awt.event.*;
  4. importjava.beans.*;
  5. importjava.io.*;
  6. importjava.lang.reflect.Method;
  7. publicclassmyBeanIntrospector
  8. {
  9. publicmyBeanIntrospector()
  10. {
  11. try
  12. {
  13. //实例化一个Bean
  14. StudentbeanObj=newStudent();
  15. //依据Bean产生一个相关的BeanInfo类
  16. BeanInfobInfoObject=
  17. Introspector.getBeanInfo(beanObj.getClass(),beanObj.getClass().getSuperclass());
  18. //定义一个用于显示的字符串
  19. Stringoutput="";
  20. //开始自省
  21. /*
  22. *BeanInfo.getMethodDescriptors()
  23. *用于获取该Bean中的所有允许公开的成员方法,以MethodDescriptor数组的形式返回
  24. *
  25. *MethodDescriptor类
  26. *用于记载一个成员方法的所有信息
  27. *MethodDescriptor.getName()
  28. *获得该方法的方法名字
  29. *MethodDescriptor.getMethod()
  30. *获得该方法的方法对象(Method类)
  31. *
  32. *Method类
  33. *记载一个具体的的方法的所有信息
  34. *Method.getParameterTypes()
  35. *获得该方法所用到的所有参数,以Class数组的形式返回
  36. *
  37. *Class..getName()
  38. *获得该类型的名字
  39. */
  40. output="内省成员方法:/n";
  41. MethodDescriptor[]mDescArray=bInfoObject.getMethodDescriptors();
  42. for(inti=0;i<mDescArray.length;i++)
  43. {
  44. //获得一个成员方法描述器所代表的方法的名字
  45. StringmethodName=mDescArray[i].getName();
  46. StringmethodParams=newString();
  47. //获得该方法对象
  48. MethodmethodObj=mDescArray[i].getMethod();
  49. //通过方法对象获得该方法的所有参数,以Class数组的形式返回
  50. Class[]parameters=methodObj.getParameterTypes();
  51. if(parameters.length>0)
  52. {
  53. //获得参数的类型的名字
  54. methodParams=parameters[0].getName();
  55. for(intj=1;j<parameters.length;j++)
  56. {
  57. methodParams=methodParams+","+parameters[j].getName();
  58. }
  59. }
  60. output+=methodName+"("+methodParams+")/n";
  61. }
  62. System.out.println(output);
  63. /*
  64. *BeanInfo.getPropertyDescriptors()
  65. *用于获取该Bean中的所有允许公开的成员属性,以PropertyDescriptor数组的形式返回
  66. *
  67. *PropertyDescriptor类
  68. *用于描述一个成员属性
  69. *
  70. *PropertyDescriptor.getName()
  71. *获得该属性的名字
  72. *
  73. *PropertyDescriptor.getPropertyType()
  74. *获得该属性的数据类型,以Class的形式给出
  75. *
  76. */
  77. output="内省成员属性:/n";
  78. PropertyDescriptor[]mPropertyArray=bInfoObject.getPropertyDescriptors();
  79. for(inti=0;i<mPropertyArray.length;i++)
  80. {
  81. StringpropertyName=mPropertyArray[i].getName();
  82. ClasspropertyType=mPropertyArray[i].getPropertyType();
  83. output+=propertyName+"("+propertyType.getName()+")/n";
  84. }
  85. System.out.println(output);
  86. /*
  87. *BeanInfo.getEventSetDescriptors()
  88. *用于获取该Bean中的所有允许公开的成员事件,以EventSetDescriptor数组的形式返回
  89. *
  90. *EventSetDescriptor类
  91. *用于描述一个成员事件
  92. *
  93. *EventSetDescriptor.getName()
  94. *获得该事件的名字
  95. *
  96. *EventSetDescriptor.getListenerType()
  97. *获得该事件所依赖的事件监听器,以Class的形式给出
  98. *
  99. */
  100. output="内省绑定事件:/n";
  101. EventSetDescriptor[]mEventArray=bInfoObject.getEventSetDescriptors();
  102. for(inti=0;i<mEventArray.length;i++)
  103. {
  104. StringEventName=mEventArray[i].getName();
  105. ClasslistenerType=mEventArray[i].getListenerType();
  106. output+=EventName+"("+listenerType.getName()+")/n";
  107. }
  108. System.out.println(output);
  109. System.out.println("writebyesonghui:)");
  110. }
  111. catch(Exceptione)
  112. {
  113. System.out.println("异常:"+e);
  114. }
  115. }
  116. publicstaticvoidmain(String[]args)
  117. {
  118. newmyBeanIntrospector();
  119. }
  120. }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值