黑马程序员_javaBean
来源:互联网 发布:淘宝外卖不能分口袋 编辑:程序博客网 时间:2024/06/04 01:28
---------------------- android培训、java培训、期待与您交流! ----------------------
今天要跟大家分享的是javaBean,javaBean是一种特殊java类,主要用于传递数据信息,这种java类中的方法主要用于访问私有的字段,且方法名符合某种命名规则。如果要在两个模块之间传递信息多个,可以将这些信息封装到一个javaBean中,这种javaBean的实例对象通常称之为值对象(Value Object,简称VO)。这些信息在类中用私有的字段来存储,若读取或设置这些字段的值,则需要一些方法来访问。JavaBean属性是根据其中的setter和getter方法来确定的,而不是根据其中的成员变量。而定义javaBean的属性有如下规则:
去掉setter方法中的set,或者是getter方法中的get,剩下的名字在通过判断此名称的第二个字母是不是小写,如果是小写,则把第一个字母也小写则得到javaBean属性的名称,反之,则不然,示例:
gettime----time
setTime----time
getCPU-----CPU
示例代码:
classPerson {
private int x;
public int getAge() {
return x;
}
public void setAge(int age) {
this.x = age;
}
}
总之一个类被当作javaBean使用时,javaBean的属性是根据方法名推断出来的,它根本看不到java类内部的成员变量。
一个符合javaBean特点的类可以当做普通类一样使用,但把它当做javaBean方式进行操作会有额外的好处:
1. javaEE开发中,经常要用到javaBean,很多环境就要求按javaBean方式进行操作。
2. JDK中提供了对javaBean进行操作的一些API,这套API就称为内省。如果要自己通过getX方法来访问私有变量,有一定的难度。用内省这套API操作javaBean比普通类方式更方便。
JavaBean API为我们提供了一些类和方法让我们操作JavaBean的属性,其中类PropertyDescriptor和接口BeanInfo比较常见,下面用一段代码演示读取javaBean的属性,然后再用一段代码设置javaBean的属性:
import java.beans.*;
import java.lang.reflect.*;
public classIntroSpectorTest {
public static void main(String []args)throws Exception{
ReflectPointpt1=newReflectPoint(3,5);
StringpropertyName="x";
//假如上面的是给出的题目,要等到一个属性x的值
//下面是传统方法得到
/* MethodmethodGetX=pt1.getClass().getMethod("getX");
//先是通过类的字节码得到方法的字节码
System.out.println(methodGetX.invoke(pt1));
//通过方法的字节码调用pt1方法返回pt1中的值
MethodmethodSetX=pt1.getClass().getMethod("setX", int.class);
methodSetX.invoke(pt1,7);
System.out.println(pt1.getX());*/
//下面通过内省的方式得到
ObjectretVal = getProperty(pt1, propertyName);
System.out.println(retVal);
Objectvalue=7;
setProperty(pt1,propertyName, value);
System.out.println(pt1.getX());
}
private static void setProperty(Object pt1,String propertyName,
Objectvalue) throwsIntrospectionException,
IllegalAccessException,InvocationTargetException {
PropertyDescriptordp2=newPropertyDescriptor(propertyName,pt1.getClass());
MethodmethodSetX=dp2.getWriteMethod();
methodSetX.invoke(pt1,value);
}
private static ObjectgetProperty(Object pt1, String propertyName)//把ReflectPoint改成Object通用类型
throws IntrospectionException,IllegalAccessException,
InvocationTargetException{
/*PropertyDescriptor dp=newPropertyDescriptor(propertyName,pt1.getClass());
MethodmethodGetX=dp.getReadMethod();
ObjectretVal=methodGetX.invoke(pt1);*/
//用IntroSpector.getBeanInfo的方法来完成值的获取
BeanInfobeanInfo=Introspector.getBeanInfo(pt1.getClass());
PropertyDescriptor[]dps=beanInfo.getPropertyDescriptors();
ObjectretVal=null;
for(PropertyDescriptordp:dps){
if(dp.getName().equals(propertyName)){
MethodmethodGetX=dp.getReadMethod();
retVal=methodGetX.invoke(pt1);
break;//记得要停止循环
}
}
return retVal;
}
}
我要说明的是我用了两种方式得到和设置javaBean类的属性值,其中里面也涵盖了一个eclipse的小技巧,重构抽取代码,把零散的代码变成一个独立的方法,还有我在getProperty方法中对比使用了BeanInfo的方法来获得属性值,其实两者的本质是相同,只不过BeanInfo的方法使用起来稍显麻烦而已。
对于javaBean的使用绝不仅仅于此,还有前辈们为我们提供的相关的javaBean的工具包,譬如Beanutils,等,极大的方便了我们在软件开发。
---------------------- android培训、java培训、期待与您交流! ----------------------
- 黑马程序员_JavaBean
- 黑马程序员_JavaBean
- 黑马程序员_javabean
- 黑马程序员_javabean总结
- 黑马程序员_javaBean
- 黑马程序员高薪_javaBean
- 黑马程序员_JavaBean
- 黑马程序员_JavaBean内省
- 黑马程序员_JavaBean
- 黑马程序员_JavaBean
- 黑马程序员_JavaBean和BeanUtils
- 黑马程序员_高新技术_JavaBean
- 黑马程序员-->12_JavaBean、内省
- 黑马程序员_javaBean学习笔记
- 黑马程序员_JavaBean简单介绍
- 黑马程序员_javabean的内省
- 黑马程序员_javaBean的内省操作
- 黑马程序员_javaBean类和代理
- ASP.NET:母版页与内容页
- Google微软两大巨头对抗 谷歌4比1领先
- 黑马程序员_枚举
- 黑马程序员_jdk1.5新特性
- arx常用的一些函数功能表 【转】
- 黑马程序员_javaBean
- vim整体缩进
- 8086汇编指令全称
- MySQL中show的用法
- @Column
- 图文验证遭遇主题相关内容干扰
- 保护你的隐私,五种控制Android应用的权限的方法
- sync fsync fdatasync fflush区别
- Android类似QQ同步助手的Tab界面的实现