博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
黑马程序员-张老师基础加强3-内省
阅读量:6544 次
发布时间:2019-06-24

本文共 2691 字,大约阅读时间需要 8 分钟。

内省:javaBean

JavaBean是一种特殊的Java类,主要用于传递数据信息,这种java类中的方法主要用于访问私有的字段,且方法名符合某种命名规则。

JavaBean的属性是根据其中的setter和getter方法来确定的,而不是根据其中的成员变量。如果方法名为setId,中文意思即为设置id,去掉set前缀,剩余部分就是属性名,如果剩余部分的第二个字母是小写的,则把剩余部分的首字母改成小的。

一、setId()的属性名id

二、isLast()的属性名last

三、setCPU的属性名是什么?CPU

四、getUPS的属性名是什么?UPS

PropertyDescriptor.

    常用方法

    Method getReadMethod()

            获得应该用于读取属性值的方法。 对应get()方法.

    Method getWriteMethod()

            获得应该用于写入属性值的方法。 对应set()方法.

      构造函数 :PropertyDescriptor(String propertyName, Class<?> beanClass)

       参数:要查找的属性名,和其所属的类            

练习:获取一个类中的Age的值

类 PropertyDescriptor:PropertyDescriptor 描述 Java Bean 通过一对存储器方法导出的一个属性。  

public static void main(String[] args) throws  Exception {        //使用反射的方式获取 。        //1.0 获取Class文件        //2.0 获取method(getAge):注意属性名的大小写转换        //使用反射的方式获取        Class clazz =Class.forName("cn.itcast.InspectorDemo");        InspectorDemo Inspector = (InspectorDemo)clazz.newInstance();        Method method = clazz.getMethod("getAge");                int age = (Integer)method.invoke(Inspector);        System.out.println(age);        //设置        Method method1 = clazz.getMethod("setName", String.class);        method1.invoke(Inspector, "zhangsan");        //获取设置后的值        Method method3 = clazz.getMethod("getName");                String name = (String)method3.invoke(Inspector);        System.out.println(name);            //2 使用javaBean获取 使用PropertyDescriptor类        String propertyName= "age";        //注意否早方法里面属性名是以小写字母开头。        PropertyDescriptor pd = new PropertyDescriptor(propertyName,cn.itcast.InspectorDemo.class);        Method methodgetAge  = pd.getReadMethod();//read相当于get()方法。writer()相当于set()        InspectorDemo Inspector1 = new InspectorDemo();         Object retval =                 methodgetAge.invoke(Inspector1);        System.out.println(retval);    //通过javabean设置        Method methodsetAge =pd.getWriteMethod();        methodsetAge.invoke(Inspector1, 30);    }}class InspectorDemo{    private int age=20;    private String name="lsisi";    public int getAge() {        return age;    }    public void setAge(int age) {        this.age = age;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }}

注意:使用反射和内省获取成员的区别是:反射需要知道方法的名字和参数,而内省不需要。 

Beanutils工具包

Beanttils.getProperty(Object bean,String name)

Beanttils.getProperty(Object bean,String name,String value)

这连个方法接收都是字符串,因为在javaWeb中通过;浏览器传输带数据都是字符串形式

beanutils方法的应用

    BeanUtils.setProperty(rf1, "x", "9");//数字用字符串形式表示。

BeanUtils.setProperty(rf1, "birthday.time","111");//可以设置人的头的眼睛的颜色,逐级设置。

map对象和beanutils之间的相互转换。

    java1.7 Map map = {map,key,value};

    BeanUtils.setProperty(map, key, value)

转载于:https://www.cnblogs.com/heimaprogramer/p/3773189.html

你可能感兴趣的文章
170. js中获取随机数 (记录一下)
查看>>
深入浅出爬虫之道: Python、Golang与GraphQuery的对比
查看>>
DHCP配置
查看>>
MySQL性能测试(二)——Ubuntu 14.4.02, MySQL 5.6.25, sysbench 4.8
查看>>
nginx 504 Gateway Time-out 的解决 java 工程
查看>>
我的友情链接
查看>>
《在你身边,为你设计》之一:特殊人群的设计关怀
查看>>
Inotify
查看>>
PO BO VO DTO POJO DAO 概念及其作用(附转换图)
查看>>
java实现KMP算法(参考[数据结构(C语言版)].严蔚敏)
查看>>
代码 PK 诗词
查看>>
spring的注解方式执行定时任务
查看>>
Html常用知识
查看>>
ubuntu MySQL 5.5 deb 安装
查看>>
Linux 实用快捷键整理 (持续更新)
查看>>
我的友情链接
查看>>
职业发展,选择大都市还是回老家?
查看>>
升级Oracle 10..2.0.1到Oracle 10.2.0.5
查看>>
linux进程和计划任务
查看>>
好程序员大数据教程Hadoop全分布安装(非HA)
查看>>