黑马程序员-->Java基础加强-->内省(Introspector)与注解(Annotation)

-------android培训java培训、期待与您交流! ----------

 

一、什么是内省(Introspector),如何了解JavaBean

   内省,字面意思就是内窥,内部检查。在Java中代表了解更多的底层细节。主要作用于对Javabean进行操作。
那么,JavaBean是什么?

   JavaBean:是一种特殊的Java类,主要用于传递数据信息,这种java类中的方法主要用于访问私有的字段,且方法符合某种命名规则。

   例如类A中有属性name, 那我们可以通过getName,setName来得到其值或者设置新的值。通过 getName/setName来访问name属性,这就是默认的规则。Java 中提供了一套API用来访问某个属性的getter/setter方法,通过这些API可以使你不需要了解这个规则(但你最好还是要搞清楚),这些API存放于包java.beans中,一般的做法是通过类Introspector的getBeanInfo方法来获取某个对象的BeanInfo信息,然后通过BeanInfo来获取属性的描述器(PropertyDescriptor),通过这个属性描述器就可以获取某个属性对应的getter/setter方法,然后我们就可以通过反射机制来调用这些方法。

   如果要在两个模块之间传递多个信息,可以将这些信息封装到一个JavaBean中,这种JavaBean的实例对象通常称之为值对象(Value Object,简称VO),因为这些bean中通常只有一些信息字段和存储方法,没有功能性方法。
JavaBean通过提供符合一致性设计模式的公共方法将内部域暴露成员属性。众所周知,属性名称符合这种模式,其它Java类可以通过自身机制发现和操作这些JavaBean属性。
   通俗理解就是,这些信息在类中用私有字段来存储,如果读取或者设置这些字段的值,则需要通过一些相应的方法来访问。JavaBean的属性是根据其中的setter和getter方法来确定的,而不是根据其中的成员变量。如果方法名为setId,中文意思即为设置id,至于你把它存到哪个变量上,不需要知道!去掉set前缀,剩余部分是属性名,如果剩余部分的第二个字母是小写的,则把剩余部分的首写字母改成小的。下面举个例子:

setId()的属性名->id
isLast()的属性名->last
setCPU的属性名->CPU
getUPS的属性名->UPS

总之,一个JavaBean类可以当成普通类用,但是一个java类不一定能当做JavaBean。因为JavaBean实际就是一种规范,当一个类满足这个规范,这个类就能被其它特定的类调用。一个类被当作JavaBean使用时,JavaBean的属性是根据方法名推断出来的,根本看不到Java类内部的成员变量。

一个符合JavaBean特点的类可以当作普通类一样进行使用,但把它当作JavaBean用肯定需要带来一些额外的好处,我们才会去了解和应用JavaBean!好处如下:
在Java EE开发中,经常要使用JavaBean。很多环境就要求按JavaBean方式进行操作,别人都这么用和要求这么做,那你就没什么选择的余地!
JDK中提供了对JavaBean进行操作的一些API,这套API就称为内省。如果要你自己去通过getX方法来访问私有的,怎么做,有一定难度吧?用内省这套API操作JavaBean比用普通类的方式更方便,提高代码重用性,提高开发效率。

 

二、JavaBean的特点

JavaBean有三个特性:
1、javaBean必须是一个具体的public的类
2、JavaBean有一个不带参数的构造函数,如果public类的构造函数包含参数的话,那这个类不能做为JavaBean
3、JavaBean通过 getProperty获取属性,通过setProperty设置属性

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值