几种封装javaBean的方法

开发框架时,经常需要使用java对象(javaBean)的属性来封装程序的数据,封装javaBean的方法有很多,比如反射,内省,以及使用工具类。下面从反射开始介绍。

1.javaBean介绍:

简介: JavaBean是使用Java语言开发的一个可重用的组件,在开发中可以使用JavaBean减少重复代码,使整个代码的开发更简洁。

编写要求: javaBean本身是一个类,设计该类的时候要遵循一下方法:

1.如果成员变量的名字是xxx,则相应地有两个用来得到成员变量值和设置变量值的方法,它们分别是getXxx()和setXxx()且是public的: public datatype getXxx(); public void setXxx(datatype data);(2)如果成员变量是boolean型数据,使用is代替get方法;: public boolean isXxx();(3)需要一个无参数的构造函数。

一个javaBean的例子:

//javaBeanpublic class Person {private int id;private String name;public Person(int id, String name) {super();this.id = id;this.name = name;}//无参数构造函数public Person(){}//获得Id属性public int getId() {return id;}//设置public void setId(int id) {this.id = id;}//get方法public String getName() {return name;}public void setName(String name) {this.name = name;}//tostring不在要求之中;@Overridepublic String toString() {return “id:”+ this.id+” name:”+ this.name;}}2.使用反射封装JavaBean:

通过反射更改对象域来封装JavaBean,通过getDeclaredField方法获得对应的域,并调用set方法进行修改。 下面的方法通过配置文件更改JavaBean的属性:

配置文件内容如下:obj.txtcom.rlovep.bean.Personid=22name=peace代码与注释:public class CofigRef {public static void main(String[] args) {try {//获得更改后的对象;Person p=(Person)getInstance();System.out.println(p);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}//根据配置文件的内容生产对象的对象并且要把对象的属性值封装到对象中。public static Object getInstance() throws Exception{//通过字符流进行输入;BufferedReader bufferedReader = new BufferedReader(new FileReader(“obj.txt”));String className = bufferedReader.readLine(); //读取配置文件获取到完整的类名。Class clazz = Class.forName(className);//通过class对象获取到无参的构造方法Constructor constructor = clazz.getConstructor(null);//创建对象Object o = constructor.newInstance(null);//读取属性值String line = null;while((line = bufferedReader.readLine())!=null){String[] datas = line.split(“=”);//通过属性名获取到对应的Field对象。Field field = clazz.getDeclaredField(datas[0]);field.setAccessible(true);if(field.getType()==int.class){//更改属性内容;field.set(o, Integer.parseInt(datas[1]));}else{field.set(o, datas[1]);}}bufferedReader.close();return o;}

此去用反射进行更改,直接更改实现域的值;比较麻烦。需要各种判断和操作,不适合用于开发。

3.通过内省封装JavaBean:

内省(Introspector) 是Java 语言对 JavaBean 类属性、事件的一种缺省处理方法。Java JDK中提供了一套 API 用来访问某个属性的 getter/setter 方法,这就是内省。 1. PropertyDescriptor类: 属性描述器类,利用该类可以获得对应属性的get和set方法。 getReadMethod(),获得用于读取属性值的方法;getWriteMethod(),获得用于写入属性值的方法; 演示如下:

//属性描述器PropertyDescriptor descriptor = new PropertyDescriptor(“id”, Person.class);//获取属性对应的get或者是set方法设置或者获取属性了。Method m = descriptor.getWriteMethod(); //获取属性的set方法。//执行该方法设置属性值m.invoke(p,110);//获得get方法;Method readMethod = descriptor.getReadMethod(); //是获取属性的get方法System.out.println(readMethod.invoke(p, null));

Introspector类: 通过调用Introspector.getBeanInfo(People.class)方法可以获得BeanInfo对象,改对象封装了people类的所有属性。 而BeanInfo中有方法 getPropertyDescriptors(),获得属性的描述PropertyDescriptor[],可以通过遍历返回结果可以操作JavaBean。演示如下:

//Introspector 内省类BeanInfo beanInfo = Introspector.getBeanInfo(Person.class);//通过BeanInfo获取所有的属性描述PropertyDescriptor[] descriptors = beanInfo.getPropertyDescriptors(); //获取一个类中的所有属性描述器for(PropertyDescriptor p : descriptors){//获得所有get方法System.out.println(p.getReadMethod()); //get方法}然后继续努力,把让自己跌倒的石头搬掉或绕过去,不就解决问题了吗?

几种封装javaBean的方法

相关文章:

你感兴趣的文章:

标签云: