黑马程序员-JavaBean

来源:互联网 发布:可以刷机的软件 编辑:程序博客网 时间:2024/05/10 11:59
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
1. 内省(Introspector)
     什么是内省?
     --内省是Java对JavaBean类属性、事件的一种缺省处理方法。
     --内省的出现有利于对类对象属性的操作,减少了代码的数量。
     JDK内省类库
     --PropertyDescriptor类:表示JavaBean类通过存储器导出一个属性。主要方法有:
          1. getPropertyType(),获得属性的class对象;
          2. getReadMethod(),获得用于读取属性值的方法;
          3. getWriteMethod(),获得用于写入属性值的方法;
          4. hashCode(),获取对象的哈希值;
          5. setReadMethod(Method readMethod),设置用于读取属性值的方法;
          6. setWriteMethod(Method writeMethod),设置用于写入属性值的方法。
     内省访问JavaBean的两种方法:
     --通过Introspector类获得Bean对象的BeanInfo,然后通过BeanInfo来获取属性的描述器(PertyDescriptor),通过这个属性描述器就可以获取某个属性对应的getter/setter方法,然后通过反射机制来调用这些方法。
     --通过PropertyDescriptor来操作Bean对象。

以student类为例:
public class Student {private String name;//字段  public String getXxx(){//读方法 return "xx";}public String setXxx(){//写方法return "xx";}public String getName() {return name;}public void setName(String name) {this.name = name;}}

方法一:
 public void test() throws Exception{ Student student = new Student(); //1.通过Introspector来获取bean对象的beaninfo BeanInfo bif = Introspector.getBeanInfo(Student.class); //2.通过beaninfo来获得属性描述器(propertyDescriptor) PropertyDescriptor pds[] = bif.getPropertyDescriptors(); //3.通过属性描述器来获得对应的get/set方法 for(PropertyDescriptor pd:pds){ //4.获得并输出字段的名字 System.out.println(pd.getName()); //5.获得并输出字段的类型 System.out.println(pd.getPropertyType()); if(pd.getName().equals("name")){ //6.获得PropertyDescriptor对象的写方法 Method md = pd.getWriteMethod(); //7.执行写方法 md.invoke(student, "Lou_Wazor"); } }  //8.输出所赋值字段的值 System.out.println(student.getName()); }

执行结果为:

class

class java.lang.Class

name

class java.lang.String

xxx

class java.lang.String

Lou_Wazor

方法二:
public void test01()throws Exception{Student st = new Student();//1.通过构造器来创建PropertyDescriptor对象PropertyDescriptor pd = new PropertyDescriptor("name", Student.class);//2.通过该对象来获得写方法Method method = pd.getWriteMethod();//3.执行写方法method.invoke(st, "Lou_Wazor");//4.输出对象字段的值System.out.println(st.getName()); //5.通过对象获得读方法method = pd.getReadMethod();//6.执行读方法并定义变量接受其返回值并强制塑形String name = (String) method.invoke(st, null); //7.输出塑形后的值System.out.println(name);}

执行结果为:

Lou_Wazor

Lou_Wazor  

2. JavaBean
     JavaBean是一种特殊的类
     --主要用于传递数据信息,这种类中的方法主要用于访问私有的字段,且方法名符合命名规则。
     JavaBean的使用
     --如果在两个模块之间传递信息,可以将信息封装进JavaBean中,这种对象称为“值对象”(Value Object)。方法比较少,这些信息存储在类的私有变量中,通过set()、get()获得。







------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 50多岁子宫肌瘤怎么办 一到晚上肛门痒怎么办 肛门和外阴很痒怎么办 脚磕到了肿了怎么办 脚碰到了肿了怎么办 腿被车子撞肿了怎么办 肛门长了小疙瘩怎么办 屁眼长了个包怎么办 屁股上长了个肉球怎么办 过敏了全身都痒怎么办 吃了螃蟹全身痒怎么办 全身痒眼睛肿了怎么办 感染了hpv病毒怎么办16 高危型hpv阳性52怎么办 腰椎盘突出腿疼怎么办 腰椎间盘突出压迫神经怎么办 疣体长到宫颈了怎么办 龟头的系带断了怎么办 龟头与系带断了怎么办 舌头下长肉芽痛怎么办 脑组织供血不足怎么办 尖锐湿锐喝酒了怎么办 快递寄错地方了怎么办 16岁掉头发严重怎么办 18岁老是掉头发怎么办 17岁头发老是掉怎么办 19岁老是掉头发怎么办 植发的了毛囊炎怎么办 长得好看不上镜怎么办 鬓角的头发总翘怎么办 戴贞洁锁硬了怎么办 欠很多钱还不了怎么办 理财平台跑路了怎么办 联通4g信号不好怎么办 老年人耳朵嗡嗡响什么原因怎么办 单侧耳朵嗡嗡响怎么办 蚊子钻到耳朵里怎么办 小飞虫进耳朵里怎么办 耳朵里飞进去虫怎么办 耳朵里进虫子了怎么办 耳朵进虫子了怎么办啊