`
sony-soft
  • 浏览: 1022630 次
文章分类
社区版块
存档分类
最新评论

类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. }
分享到:
评论

相关推荐

    backbone-introspector:骨干应用程序自省-生成应用程序组件的树状图(使用d3.js)

    骨干内省者骨干应用程序自省-生成应用程序组件的树状图(使用d3.js)要求骨干应用装有require.js的模块预习 还检查TodirMVC实现的示例目录安装在您的main.js中require ( ['backbone' ,'views/app' ,'routers/router'...

    JAVA的内省机制(introspector)与反射机制(reflection).docx

    JAVA的内省机制(introspector)与反射机制(reflection).docx

    使用struts2的Introspector做日志

    NULL 博文链接:https://liuna718-163-com.iteye.com/blog/1731217

    java-beans-lite:轻量级且快速的java.beans.Introspector实现

    由于它与AWT的紧密依赖,因此无法轻易将其从java.desktop模块中删除,从而导致任何使用java.beans包的第三方库都依赖于所有java.desktop类,从而在JVM安装中增加了12mb的额外开销,并且一些额外的内存使用情况。...

    Java 内省introspector相关原理代码解析

    主要介绍了Java 内省introspector相关原理代码解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    Python库 | plone.introspector-0.1.tar.gz

    资源分类:Python库 所属语言:Python 资源全名:plone.introspector-0.1.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    Neo4j GraphQL 库(graphql--neo4j-introspector-1.0.1.zip)

    Neo4j GraphQL 库(graphql--neo4j-introspector-1.0.1.zip) 源代码。 Neo4j GraphQL 库是一个高度灵活、低代码、开源的 JavaScript 库,可通过利用连接数据的力量为跨平台和移动应用程序实现快速 API 开发。 ...

    Neo4j GraphQL 库(graphql--neo4j-introspector-1.0.1.tar.gz)

    Neo4j GraphQL 库(graphql--neo4j-introspector-1.0.1.tar.gz) 源代码。 Neo4j GraphQL 库是一个高度灵活、低代码、开源的 JavaScript 库,可通过利用连接数据的力量为跨平台和移动应用程序实现快速 API 开发。 ...

    openbeans1.0.zip

    需要使用到java.beans.BeanInfo 等类,但是AS默认是没有这些类的,导致项目不能编译。使用openBeans.jar 方案能解决此问题。import 的包需要改一下。改成import com.googlecode.openbeans.BeanInfo。 解决

    Java 内省(Introspector)深入理解

    主要介绍了Java 内省(Introspector)深入理解的相关资料,需要的朋友可以参考下

    php-introspector

    使用 Atom 包管理器,它可以在设置视图中找到,或者从命令行运行apm install php-introspector 。 您还需要安装软件包。 用法 目前,自动完成依赖于从远程(或本地)服务器获取建议。 它从文件中读取此服务器的位置...

    RDF Software Introspector-开源

    Introspector使处理源代码的编程工具(例如编译器)能够以标准且中立的方式进行通信,从而减少了意外的编程成本。 http://github.com/h4ck3rm1k3/

    Eclipse OLE Introspector-开源

    Eclipse 平台的 COM 内省器和代码生成器

    libkvmi:KVM虚拟机自检库

    您还需要使用VM自省支持( )构建的QEMU。 在examples/子目录中运行: # ./hookguest-libkvmi /tmp/introspector 然后只需使用以下命令启动KVM域: qemu-system-x86_64 ... \ -enable-kvm \

    Thinking in Java 中文第四版+习题答案

    13.18.2 用Introspector提取 13.18.3 一个更复杂的 13.18.4 Bean的封装 13.18.5 更复杂的Bean支持 13.18.6 Bean更多的知识 13.19 Swing入门 13.19.1 Swing有哪些优点 13.19.2 方便的转换 13.19.3 显示框架 13.19.4 ...

    beanutils-1.9.3-bin

    BeanUtils是由Apache公司开发的针对操作JavaBean的工具包。...但是由Apache公司开发的BeanUtils会更常用,同时,BeanUtils还需要配合第三方日志工具来使用,这里我们同样使用Apache公司的common logging

    Think in Java(中文版)chm格式

    13.18.2 用Introspector提取BeanInfo 13.18.3 一个更复杂的Bean 13.18.4 Bean的封装 13.18.5 更复杂的Bean支持 13.18.6 Bean更多的知识 13.19 Swing入门 13.19.1 Swing有哪些优点 13.19.2 方便的转换 13.19....

    JAVA_Thinking in Java

    13.18.2 用Introspector提取BeanInfo 13.18.3 一个更复杂的Bean 13.18.4 Bean的封装 13.18.5 更复杂的Bean支持 13.18.6 Bean更多的知识 13.19 Swing入门 13.19.1 Swing有哪些优点 13.19.2 方便的转换 13.19.3 显示...

    Java初学者入门教学

    13.18.2 用Introspector提取BeanInfo 13.18.3 一个更复杂的Bean 13.18.4 Bean的封装 13.18.5 更复杂的Bean支持 13.18.6 Bean更多的知识 13.19 Swing入门 13.19.1 Swing有哪些优点 13.19.2 方便的转换 13.19.3 显示...

    ThinkInJava

    13.18.2 用Introspector提取BeanInfo 13.18.3 一个更复杂的Bean 13.18.4 Bean的封装 13.18.5 更复杂的Bean支持 13.18.6 Bean更多的知识 13.19 Swing入门 13.19.1 Swing有哪些优点 13.19.2 方便的转换 13.19.3 显示...

Global site tag (gtag.js) - Google Analytics