黑马程序员_Java高新技术三_javabean、注解的应用

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



内省的概念理解:
IntroSpector--》主要用于对JavaBean进行操作--》JavaBean是特殊的Java类,符合特殊规则的类。
JavaBean:为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器。即有getXXX(),setXXX()方法。
JavaBean 通过提供符合一致性设计模式的公共方法将内部域暴露成员属性。众所周知,属性名称符合这种模式,其他Java 类可以通过自身机制发现和操作这些JavaBean 属性。
jaavabean属性介绍:
去掉get、set名称后为Age--》如果第二个字幕是小写,则吧第一个字幕变成小写--》age
例子:
gettime-->time
getTime-->time
getCPU-->CPU


如果要在两个模块之间传递多个信息,可以将这些信息封装到一个JavaBean中,这种JavaBean的实例对象通常称之为值对象(Value Object,简称VO)。这些信息在类中用私有字段来储存,如果读取或设置这些字段的值,则需要通过一些相应的方法来访问,JavaBean的属性是根据其中的setter和getter方法来确定的,而不是根据其中的成员变量。
好处:
JDK中提供了对JAVABEAN进行操作的一些API,这套API称为内省。如果自己去通过getX方法访问私有的x,有一定难度。用内省这套API操作JavaBean比用普通类的方式更方便。




eclipse技巧: 重构---抽取方法
对JavaBean的简单内省操作:
JavaBean对象为值对象,即传递值的对象,成为VO(Value Object)
PropertyDescriptor pd = new PropertyDescriptor(propertyName, pt1.getClass())
Method methodGetX = pd.getReadMethod();
object retval = methodGetX.invoke(pt1);




对JavaBean的复杂内省操作:
BeanInfo beanInfo = Introspector.getBeanInfo(pt1.getClass());//把java类当成javabean来看
PropertyDescriptor[] pds = beanInfo.getPropertyDescriptors();






使用BeanUtils工具包操作JavaBean:
导入beanutil jar包,放入对应工程的lib下,然后右键添加进去。
BeanUtil.setProperty(对象,"属性","值");
BeanUtil.getProperty(对象,"属性");
BeanUtil方法,在"值"得位置,以字符串对其属性进行操作。


java7的新特性——定义map的方法
Map map= (name:"zxx",age:18)
BeanUtils.setProperty(map,"name","18");


PropertyUtils.setProperty(对象,"属性",值);
PropertyUtils.getProperty(对象,"属性");
PropertyUtils方法在"值"得位置,以该对象属性本身类型进行操作。


33.(jdk1.5新特性)了解和入门注解的应用:


@Deprecated——标注对应方法已经过时。
直接在刚才的类中增加一个方法,并加上@deprecated标注,在另外一个类中调用这个方法。


@Override--判断是否是重写
public boolean equals(Reflect other)方法与HashSet结合讲解。

@SuppressWarnings
如果方法体中有过时的方法,那么可以在方法上面一行加@SuppressWarnings("deprecation")


注解可以加到类上面、成员变量上面、局部变量上面、方法上面


总结:注解相当于一种标记,加了注释就等于打上了某种标记,没加,则等于没有某种标记。
在java.lang包,可以看到JDK中提供最基本的annotation。






34.注解的定义和反射调用

良好的变成习惯:
类名、属性名:名词、形容词+名词
方法名:动词、动词+名词


注解的定义与反射调用:


注解的应用结构
注解类《--应用了"注解类"的类《--对"应用了注解类的类"进行反射操作的类


@Target在注解类中加注解,则这个注解为元注解。


注解的生命周期啊的三个阶段:
java源文件-->class文件-->内存中的字节码。
RetetionPolicy.SOURCE、RetetionPolicy.CLASS、RetetionPolicy.RUNTIME;
分别对应其字节码。


为注解增加各种属性:


数组类型的属性:
int [] arrayAttr() default{1,2,3};
@MyAnnotation(arrayAttr={2,3,4});
如果数组属性中有一个元素,这时候属性值部分可以省略大括号。
枚举类型的属性:
EnumTest TrafficLamp lamp();
@MyAnnotation(lame=EnumTest.TrafficLame.GREEN);
注解类型的属性:
使用的时候:
@注解名(方法1="属性值",方法2="属性值") 
如果只有一个属性或其中有一个属性为缺省属性,则使用的时候
@注解名("属性值")


注解的返回值还是注解,返回的注解上面还有属性。
注释可以返回:8个基本类型、Class类型、枚举类型、注解类型、刚才这些前面类型的数组,除此之外其他不可以返回。





---------------------- android培训java培训、期待与您交流! ---------------------- 详细请查看: http://edu.csdn.net/heima
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值