commons-beanutils的使用
commons-beanutils是通过内省来完成的。
需要两个包:
- commons-beanutils-1.8.3.jar
- commons-logging-1.1.1.jar
JavaBean类:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | package cn.zy.study; /** * 提供get和set方法 * 并有一个无参的构造方法 * @author zy * */ public class Person { private String name; private int age; private String gender; public Person() { } public String getName() { return name; } public void setName(String name) { this .name = name; } @Override public String toString() { return "Person [name=" + name + ", age=" + age + ", gender=" + gender + "]" ; } public int getAge() { return age; } public void setAge( int age) { this .age = age; } public String getGender() { return gender; } public void setGender(String gender) { this .gender = gender; } } |
对bean类的操作
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | package cn.test; import java.lang.reflect.InvocationTargetException; import java.util.HashMap; import java.util.Map; import org.apache.commons.beanutils.BeanUtils; import org.junit.Test; import cn.zy.study.Person; public class Demo3 { @Test public void fun1() throws ClassNotFoundException, InstantiationException, IllegalAccessException, InvocationTargetException, NoSuchMethodException{ //用Class类的forName方法来获取对应的class对象 String className = "cn.zy.study.Person" ; Class clazz = Class.forName(className); //使用clazz对应类的默认构造器创造实例 Object bean = clazz.newInstance(); /**使用beanutils工具设置bean类的属性值, * 所有的属相值都可以设置成String类型,将会自动转换 * 没有设置属性的值将为null */ BeanUtils.setProperty(bean, "name" , "Scott" ); BeanUtils.setProperty(bean, "age" , "17" ); System.out.println(bean); //得到bean类的属性值,注意属值都将变成String类型 String name = BeanUtils.getProperty(bean, "name" ); String age = BeanUtils.getProperty(bean, "age" ); } @Test /** * 将map直接封装到一个bean中 */ public void fun2() throws InstantiationException, IllegalAccessException, InvocationTargetException{ Map<String,String> map = new HashMap(); map.put( "name" , "Scott" ); map.put( "age" , "15" ); //利用类的class属性来获取Class对象,并创建 Person bean = Person. class .newInstance(); //将map数据填充到Javabean中 BeanUtils.populate(bean, map); System.out.println(bean); } } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了