A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 郑昌奋 中级黑马   /  2013-3-23 10:44  /  2062 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 郑昌奋 于 2013-3-23 13:19 编辑

内省操作是什么?

点评

如果问题未解决,请继续追问回复者,如果问题已经解决,请将分类改为“已解决”,谢谢  发表于 2013-3-23 12:59

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

5 个回复

倒序浏览
     在java的反射中,所有的类被抽象出一个类,即Class类,这样我们就可以在程序运行的过程中通过配置文件,动态的加载类。但是在用反射的时候有些前提,就是:当我们调用有参的constructor的时候必须先知道构造函数传入的参数是什么类型;调用Method的时候必须先知道成员函数传入的参数是什么类型;调用field的时候必须先知道成员变量的类型。但是在某些情况下,一个类中的成员属性的名字对外是不可见的,这时候我们只可以得出他的成员类型的数组field[],在不知道确切变量名的情况下不可以定位到确切的变量上。而他提供了对这个属性公开的读(get)、写(set)方法, 虽然方法名和方法操作的对象有时候有很大的关系,但是我们不能保证这个关系一定成立。而且这种只提供get、set方法,不提供变量名的情况还很常见,因此java就将这种抽象为javabean类,对javabean类的操作,通过get、set函数后面的名字就“拟”得出变量的名字。通过这个名字,我们可以确切的求出某个变量的值。而对javabean的操作是通过内省(introspector)来完成的。
     建议:不明白可以去看看张孝祥老师的相关视频。

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
赵家阳 发表于 2013-3-23 10:56
在java的反射中,所有的类被抽象出一个类,即Class类,这样我们就可以在程序运行的过程中通过配置文件 ...

嗯,明白了!谢谢你
回复 使用道具 举报
这个张老师的视频javaBean 那涉及了一些,
首先  内省 是 Java 语言对 Bean 类属性的一种缺省处理方法。
内省对javabean有两种访问格式
1.通过PropertyDescriptor类操作Bean的属性。
2.通过Introspector类获得Bean对象的 BeanInfo,然后通过 BeanInfo 来获取属性的描述器( PropertyDescriptor ),通过这个属性描述器就可以获取某个属性对应的 getter/setter 方法,然后通过反射机制来调用这些方法。
什么时候用内省
开发框架时,经常需要使用java对象的属性来封装程序的数据,每次都使用反射技术完成此类操作过于麻烦,所以sun公司开发了一套API,专门用于操作java对象的属性。
怎么更好的了解内省
Sun公司的内省API过于繁琐,所以Apache组织结合很多实际开发中的应用场景开发了一套简单、易用的API操作Bean的属性——BeanUtils


回复 使用道具 举报
本帖最后由 谢洋 于 2013-3-23 12:26 编辑

老方的30天Web开发视频说得最清楚,内省的最大作用是可以很方便的操作数据的,建议你有空去看一下
回复 使用道具 举报
郑昌奋 发表于 2013-3-23 11:01
嗯,明白了!谢谢你

互相交流哈。。。 :lol
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马