----是不是联想到了反射机制了哈,这两者有什么区别呢?
■ 比较官方的描述:javaBean 是一种java 语言写成的可重用的组件(类)。
■ 简单理解:就是一种特殊类,遵循特定的规范,遵循的规范如下:
必须使用 public 修饰(javabean)类
(javabean)类必须有公共无参构造器
包含有属性的操作手段(获取属性值或给属性赋值---getter/setter)
■ javaBean 可以很复杂,也可以很简单。
javabean 可以有的信息(不是必备):方法Method、事件event、属性property
补充一下属性property:表示状态,不是字段,是字段的操作方法getter、setter方法决定的,判断属性看getter/setter
□ 复杂的javabean拥有了事件、属性、方法,例如UI(button、panel、window类);
□ 简单的javabean,最简单最常用的有实体类domain-包含了属性和操作属性的getter、setter方法,还有dao、service组件,封装数据,操作数据库,逻辑运算等。
--------一般常用来操作简单的javaBean(domain类)的属性。
(1)获取属性名或属性类型
(2)设置属性值或获取属性值-通过反射调用setter或getter方法(setter/getter)
Introspector注意核心类在哪个包,例如反射-Class在lang包里,内省的Introspector在beans包里
抓住核心类Introspector(学习的突破口),顺腾摸瓜,例如反射抓住核心类Class,然后顺藤摸瓜,获得构造器Constructor、方法Method;
我们知道javaBean可以具有属性、事件、方法,而操作javabean的内省机制,它的核心类Introspector就是操作javaBean的属性、事件、方法。
Introspector(核心类、学习内省机制的突破口、学习操作javaBean的学习入口)---操作javaBean得到javaBean的描述对象BeanInfo对象】
得到javaBean的属性描述器PropertyDescriptor】
得到关于属性的操作】
@Test public void testIntrospector() throws Exception { //1、通过突破口(核心类Introspector)获取javaBean描述对象BeanInfo BeanInfo beanInfo = Introspector.getBeanInfo(Person.class,Object.class); //2、获取javaBean中的属性描述器 PropertyDescriptor[] pds = beanInfo.getPropertyDescriptors(); //创建一个Person对象 Person person = new Person(); for (PropertyDescriptor pd : pds) {//遍历数组描述器数组 //3-1、获取当前的属性的属性名 System.out.println("当前属性的属性名是:" +pd.getName()); System.out.println("当前属性的getter方法是:" +pd.getReadMethod()); System.out.println("当前属性的setter方法是:" +pd.getWriteMethod()); if("name".equals(pd.getName())) {//若当前属性名是name【不能直接使用setName方法,因为反射的时候并不知道是哪个具体的方法】 Method setter = pd.getWriteMethod();//3-2、获取setter方法 setter.invoke(person, "shan");//设置当前person对象的name值为shan } } }本文来自博客园,作者:一乐乐,转载请注明原文链接:https://www.cnblogs.com/shan333/p/15929283.html