学习JavaBean 遇到的问题

来源:互联网 发布:qq会员永久软件 编辑:程序博客网 时间:2024/06/07 05:42

今天学习了Apache编写的Beanutils工具的基本使用方法,使用步骤如下:

1)官网下载2各工具Beanutils及Logging 解压后将两个工具的主要文件拷贝至工程lib目录下


2)右键beanutils及logging jar工具,依照下图加入Build path


能看到如下状态


3)编写了person.java的 javabean类以及测试类IntroSepectorDemo.java 同时导入beanutils的jar包

package JavaBean;import java.beans.IntrospectionException;import java.beans.PropertyDescriptor;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;import org.apache.commons.beanutils.BeanUtils;public class IntroSpectorDemo {public static void main(String[] args) throws Exception {person p = new person("zhangsan", 24);String str = BeanUtils.getProperty(p, "name");System.out.println(str);}}


person类

package JavaBean;class person {private String name1;private int age;public String getName() {return name1;}public void setName(String name) {this.name1 = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public person(String name, int age) {super();this.name1 = name;this.age = age;}}
运行提示找不到getter name方法


明明是有方法的,为啥提示找不到呢,最终经过百度查询在某论坛高人指点javabean类应该使用public进行修饰

程序修改后,运行成功!


最后再附加上BeanUtils的2种最常用的方法populate 和 describe,可以将Bean中属性转换为Map对象,测试代码如下

package JavaBean;import java.beans.PropertyDescriptor;import java.lang.reflect.InvocationTargetException;import java.util.HashMap;import java.util.Map;import org.apache.commons.beanutils.BeanUtils;public class beanutilDemo {public static void main(String[] args) throws Exception {// TODO Auto-generated method stub//初始化m类型为MapMap<String,String> m = new HashMap<String,String>();//往Map中存入键值对m.put("name", "zhangsan");m.put("age", "24");//初始化p对象类型为personperson p = new person();//用m的属性map给p对象赋值,使用Bean工具的populate方法BeanUtils.populate(p, m);//打印赋值结果System.out.println(p.getName());System.out.println(p.getAge());//建立另外一个p1对象并进行初始化值person p1 = new person("张三", 28);//通过Beanutils的describe方法将p1对象的属性存为map对象m1Map<String,String> m1 = BeanUtils.describe(p1);//用m1的属性map给p对象赋值,使用Bean工具的populate方法BeanUtils.populate(p, m1);//打印赋值结果System.out.println(p.getName());System.out.println(p.getAge());}}
运行结果如下:


0 0
原创粉丝点击