1、javaBean实现Serializable接口
2、javaBean是一个编程规范,要求你的变量是private,而用set/get来取值。然后java通过自省来取值和赋值
一个JavaBean类可以不当JavaBean用,而当成普通类用。JavaBean实际就是一种规范,当一个类满足这个规范,这个类就能被其它特定的类调用。一个类被当作javaBean使用时,JavaBean的属性是根据方法名推断出来的,它根本看不到java类内部的成员变量。去掉set前缀,然后取剩余部分,如果剩余部分的第二个字母是小写的,则把剩余部分的首字母改成小的。下面就用前面的讲解的反射方式来设置或读取JavaBean的属性:
private static void setObjectProperty(ReflectPoint pt1, int value,String propName) throws IntrospectionException, IllegalAccessException, InvocationTargetException {
/*BeanInfo bean = Introspector.getBeanInfo(ReflectPoint.class);
PropertyDescriptor [] properties = bean.getPropertyDescriptors();
for(PropertyDescriptor property: properties)
{
if(property.getName().equals(propName))
{
Method mSetX = property.getWriteMethod();
mSetX.invoke(pt1, value);
break;
}
}*/
PropertyDescriptor property = new PropertyDescriptor("x",ReflectPoint.class);
Method mSetX = property.getWriteMethod();
mSetX.invoke(pt1, value);
}
代码中注释的语句代表一种方式,最后的三行代表另外一种设置相应类相应属性的方式。从简洁上来说,第二种方式显然更优雅。第一种方式中首先是获得相应javaBean的类信息bean,用的BeanInfo这个类来描述的。然后就能够通过getPropertyDescriptors方法获取属性描述数组对象。最后从数组中取去一个个的属性对象进行操作——获取相应的读写方法,然后调用相应的读写方法。这些是通过反射机制做到的。由于这种方式比较麻烦,如果只调用其中一种方法,就要遍历一次属性描述数组,所以就产生了第二种方式,直接通过传入属性名称,相应的javaBean类型参数,构造出一个需要的PropertyDescriptor对象,然后再进行调用。
张孝祥老师的基础加强视频讲得很详细,希望能帮到你! |