一、项目中使用了 Introspector 。以下是我学习 Introspector 的代码
public class MyBean extends TestIntrospector{
private String id = null;
private String usreName = null;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getUsreName() {
return usreName;
}
public void setUsreName(String usreName) {
this.usreName = usreName;
}
}
import java.beans.BeanInfo;
import java.beans.Introspector;
import java.beans.IntrospectionException;
import java.beans.MethodDescriptor;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Method;
public class TestIntrospector {
private MyBean beanObj = null;
private BeanInfo bBeanObjInfo = null;
private String output = "";
private String methodParams = new String();
public void testIntrospector(){
try
{
//实例化一个Bean
beanObj = new MyBean();
//依据Bean产生一个相关的BeanInfo类
bBeanObjInfo = Introspector.getBeanInfo(beanObj.getClass());
output = "内省成员方法:\n";
/* BeanInfo.getMethodDescriptors() 用于获取该Bean中的所有允许公开的成员方法,以MethodDescriptor数组的形式返回 */
/* MethodDescriptor类 用于记载一个成员方法的所有信息 */
MethodDescriptor[] mehtodDesc = bBeanObjInfo.getMethodDescriptors();
for (int i = 0; i < mehtodDesc.length; i++) {
/* MethodDescriptor.getName()获得该方法的方法名字 */
String methodName = mehtodDesc[i].getName();
/* MethodDescriptor.getMethod() 获得该方法的方法对象(Method类)*/
/* Method类 记载一个具体的的方法的所有信息 */
Method methodObj = mehtodDesc[i].getMethod();
/* Method.getParameterTypes() 获得该方法所用到的所有参数类型,以Class数组的形式返回 */
Class[] parameters = methodObj.getParameterTypes();
if(parameters.length > 0){
for (int j = 0; j < parameters.length; j++) {
methodParams = parameters[j].getName();
}
}
output += methodName + "(" + methodParams + ")\n";
}
System.out.println(output);
System.out.println("------------------------------------------\n");
output = "内省成员属性\n";
/* bBeanObjInfo.getPropertyDescriptors(),用于获取该Bean中的所有允许公开的成员属性,以PropertyDescriptor数组的形式返回 */
/* PropertyDescriptor类 用于描述一个成员属性 */
PropertyDescriptor[] propertyDesc = bBeanObjInfo.getPropertyDescriptors();
for (int i = 0; i < propertyDesc.length; i++) {
/* PropertyDescriptor.getName() 获得该属性的名字 */
String propertyName = propertyDesc[i].getName();
Class propertyType = propertyDesc[i].getPropertyType();
output += propertyName + " ( " + propertyType.getName() + " )\n";
}
System.out.println(output);
}catch(IntrospectionException e){
System.out.println("Java Bean 内省发生异常。");
e.printStackTrace();
}
}
public static void main(String[] arg){
new TestIntrospector().testIntrospector();
}
}
分享到:
相关推荐
"JAVA的内省机制(introspector)与反射机制(reflection)" JAVA 的内省机制(introspector)和反射机制(reflection)是两个重要的概念,在 JAVA 编程中扮演着至关重要的角色。那么,什么是内省机制和反射机制?它们...
在Struts2中,Introspector是一个核心组件,用于检查和获取Action类的属性,这对于实现诸如日志记录、数据验证等任务非常有用。这篇博客文章可能探讨了如何利用Struts2的Introspector来实现日志功能。 日志在软件...
在提供的代码示例中,`test01()` 函数展示了如何使用`Introspector.getBeanInfo(Student.class).getPropertyDescriptors();` 获取Student类的所有属性描述符。属性描述符(PropertyDescriptor)封装了JavaBean的...
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 库是一个高度灵活、低代码、开源的 JavaScript 库,可通过利用连接数据的力量为跨平台和移动应用程序实现快速 API 开发。 ...
由于它与AWT的紧密依赖,因此无法轻易将其从java.desktop模块中删除,从而导致任何使用java.beans包的第三方库都依赖于所有java.desktop类,从而在JVM安装中增加了12mb的额外开销,并且一些额外的内存使用情况。...
资源分类:Python库 所属语言:Python 资源全名:plone.introspector-0.1.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
骨干内省者骨干应用程序自省-生成应用程序组件的树状图(使用d3.js)要求骨干应用装有require.js的模块预习 还检查TodirMVC实现的示例目录安装在您的main.js中require ( ['backbone' ,'views/app' ,'routers/router'...
使用 Atom 包管理器,它可以在设置视图中找到,或者从命令行运行apm install php-introspector 。 您还需要安装软件包。 用法 目前,自动完成依赖于从远程(或本地)服务器获取建议。 它从文件中读取此服务器的位置...
Java内省(Introspector)是Java语言提供的一种机制,用于在运行时分析Java对象的属性、方法和事件。这个特性对于开发人员来说非常有用,因为它允许程序动态地检查和修改对象的状态,而不必了解对象的具体实现细节。...
Introspector使处理源代码的编程工具(例如编译器)能够以标准且中立的方式进行通信,从而减少了意外的编程成本。 http://github.com/h4ck3rm1k3/
接下来,我们将创建一个简单的Java类,并使用Betwixt进行XML与Java对象的转换。假设我们有一个`Person`类,包含`name`和`age`两个属性: ```java public class Person { private String name; private int age; ...
为了解决这个问题,我们可以在使用完`Introspector`之后调用`Introspector.flushCaches()`方法,清除缓存以避免内存泄漏。 `IntrospectorCleanupListener`是Spring框架为了进一步防止这种内存泄漏而设计的一个监听...
Eclipse 平台的 COM 内省器和代码生成器
//import java.beans.Introspector; //import java.beans.PropertyDescriptor; import com.googlecode.openbeans.BeanInfo; import com.googlecode.openbeans.IntrospectionException; import ...
特征: 设置和使用简单与 iOS Simulator 配套桌面应用程序兼容 - 在运行时从桌面应用程序或设备(点击状态栏)向所选视图发送消息(调用任何方法) 通过应用程序范围的键盘命令控制突出显示视图框架显示视图原点和...
- **设计时支持**:通过JavaBeans Architecture(如Introspector和BeanInfo)提供设计时信息,增强IDE的可视化编辑能力。 - **国际化**:使用ResourceBundle支持多语言环境。 7. **资源** "中国IT认证实验室学习...
BeanUtils是由Apache公司开发的针对操作JavaBean的工具包。...但是由Apache公司开发的BeanUtils会更常用,同时,BeanUtils还需要配合第三方日志工具来使用,这里我们同样使用Apache公司的common logging
这个例子可能包括一个简单的Java类,一个对应的XML文件,以及使用Betwixt进行转换的Java代码。 例如,假设有一个名为`Person`的Java类,包含`name`和`age`字段,对应的XML文件可能如下: ```xml <name>John Doe ...
通过JSON,app-introspector可以将复杂的Bean信息结构化,使得远程调用和自动化处理变得更加简单。 在实际应用中,app-introspector可以用于监控应用程序的健康状况,检测潜在的性能瓶颈,或者在出现问题时快速定位...