内省-->了解JavaBean
内省对应的英文单词为IntroSpector,它主要用于对JavaBean进行操作,JavaBean是一种特殊的java类,其中的某些方法符合某种命名规则,如果一个Java类中的一些方法符合某种命名规则,则可以把它当做JavaBean来使用
JavaBean主要用于传递数据信息,这种Java类中的方法主要用于访问私有的字段,且方法名符合某种命名规则。
如果要在两个模块之间传递多个信息,可以将这些信息封装到一个JavaBean中,这种JavaBean的实例对象通常称为值对象(Value Object,简称VO)。这些信息在类中用私有字段来存储,如果读取或设置这些字段的值,则需要通过一些相应的方法来访问,JavaBean的属性是根据其中的setter和getter方法来确定的。而不是根据其中的成员变量。如果方法名为 setId中文意思即为设置id,至于把它存到哪个变量上,不用管它,如果方法名为getId,中文意思即为获取 id,至于从哪个变量上去,也不用管。去掉get/set前缀,剩余部分就是属性名,如果剩余部分的第二个字母是小写的,则把剩余部分的首字母也改成小写的。
总之,一个类被当做JavaBean使用时,JavaBean的属性是根据方法名推断出来的,它根本看不到java类内部的成员变量。
BeanUtils工具包 :阿帕奇提供的专门针对JavaBean进行操作的根据类
可以方便的设置提取/设置JavaBean的值
使用时需要导入Jar包
commons-beanutils.jar
commons-logging-1.1.jar
注解 annotation
作用:是用于告诉编译器
一个注解就是一个类
使用注解 相当于创建了这个类的实例对象
@SuooeressWarnings(“deprecation”)压缩警告注解
@Deorecated过时注解 假设对一个类升级了要把某个方法作废
@Override 覆盖
注解相当于一种标记,在程序中加了注解就等于给程序加上了某种标记,没加,则等于没有某中标记,以后,javac编译器,开发工具和其他程序可以用反射来了解哦你的类及各种元素上有无何种标记,就去干相应的事。标记可以加在包,类,字段,方法,方法的参数以及局部变量上。
注解的应用结构
注解类---应用了“注解类”的类---对“应用了注解类的类”进行反射操作的类
根据发射测试的问题,引出@Retetion元注解的讲解,其三种取值:RetetionPolicy.SOURCE,
RetetionPolicy.CLASS, RetetionPolicy.RUNTIME:分别对应:java源文件àclass文件à内存中的字节码。
为注解增加基本属性
一个注解相当于一个某公司胸牌,如果你胸前贴了公司胸牌,就是公司员工,否则就不是。如果还想区分出事公司哪个部门的,这个时候可以为胸牌在增加一个属性来进行区分。
定义基本类型属性和应用属性:
在注解中增加String xxx();
@XXX(xxx=“”);
为属性指定缺省值:
String xxx() default “” ;
Value 属性:String value() default “abc” ;
如果注解中只有一个名称为value的属性,且你只想设置value属性(即其他属性都采用默认值或者你只有一个value属性),那么可以省略value=部分。
数组类型的属性
Int[] arragAttr() default {1,2,3};
@XXX(arratAttr={2,3,4});
如果数组属性中只有一个元素,这个时候属性值部分可以省略大括号。
此外还可以加入枚举,注解类型的属性
枚举和注解都是特殊的类,不能用 new创建它们的实例对象,创建枚举的实例对象就是在其中增加元素。
在程序中创建出一个注解的实例对象直接用@放上一个标记即可
MetaAnnotation注解的定义:
Public @interface MetaAnnotation{
String value();
}