【简介】
- BeanUtils是一种方便我们对JavaBean进行操作的工具类,是Apache组织下的产品。
- 注意:在实际开发过程中应优先选择spring框架自带的BeanUtils,这样就可以避免过多的引入不必要的maven依赖(同理的还有spring框架自带的StringUtils)
commons-beanutils
commons-beanutils
1.9.4
【API介绍】
/**
* 把orig对象copy到dest对象中.实际开发中尽量避免使用。
* CommonsBeanUtils主要有以下几个耗时的地方:输出了大量的日志调试信息,重复的对象类型检查。
*
* @param dest 目标实例
* @param orig 被复制实例
*/
public static void copyProperties(Object dest, Object orig) {}// 把map里面的值放入bean中
public void populate (Object bean, Map map)
/**
* 复制一个对象
*
* @param bean 实例对象
* @return
*/
public static Object cloneBean(Object bean) {}
/**
* 把Bean的属性值放入到一个Map里面
*
* @param bean 实例对象
* @return
*/
public static Map, String> describe(Object bean){}
/**
* 设置Bean对象中名称为name的属性值赋值为value.
*
* @param bean实例对象
* @param name属性名称
* @param value 属性值
*/
public static void setProperty(Object bean, String name, Object value) {}
/**
* 取得bean对象中名为name的属性的值
*
* @param bean 实例对象
* @param name 属性名称
* @return
*/
public static String getProperty(Object bean, String name) {}
/**
* 以String数组形式返回指定bean的指定array属性的值。
*
* @param bean 实例对象
* @param name 属性名称
* @return
*/
public static String[] getArrayProperty(Object bean, String name) {}
/**
* 返回指定bean的指定简单属性的值,将其转换为String,如果是list或者数组,返回第一个元素的值
*
* @param bean 实例对象
* @param name 属性名称
* @return
*/
public static String getSimpleProperty(Object bean, String name) {}
/**
* 以String形式返回指定bean的指定索引属性的值,该属性为一个数组或List。否则会抛IllegalArgumentException
*
* @param bean 实例对象
* @param name 属性名称,如 name[0]
* @return
*/
public static String getIndexedProperty(Object bean, String name) {}
/**
* 以String形式返回指定bean的指定索引属性的值,该属性为一个数组或List。否则会抛IllegalArgumentException
* @param bean 实例对象
* @param name 属性名称
* @param index 索引位置
* @return
*/
public static String getIndexedProperty(Object bean, String name, int index){}
/**
* 以String形式返回指定bean的指定索引属性的值。属性类型必须为map,否则会抛IllegalArgumentException
*
* @param bean 实例对象
* @param name 属性名称,如contactDetails(2).
* @return
*/
public static String getMappedProperty(Object bean, String name) {}
/**
*以String形式返回指定bean的指定索引属性的值。属性类型必须为map,否则会抛IllegalArgumentException
* @param bean 实例对象
* @param name 属性名称,如contactDetails.
* @param key 索引名称,必须为字符串
* @return
*/
public static String getMappedProperty(Object bean, String name, String key){}
测试代码
public class BeanUtilsDemo {
public static void main(String[] args) throws InvocationTargetException, IllegalAccessException, NoSuchMethodException, InstantiationException {
User user = new User();
user.setFather("zhang jack");
user.setMother("zhao jack");
BeanUtils.setProperty(user, "name", "Jack");
BeanUtils.setProperty(user, "id", 21);
String name = BeanUtils.getProperty(user, "name");
System.out.println("赋值后的对象:" + user);
User user1 = (User) BeanUtils.cloneBean(user);
System.out.println("cloneBean对象" + user1);
Map, String> describe = BeanUtils.describe(user);
Set> entries = describe.entrySet();
Iterator> iterator = entries.iterator();
while (iterator.hasNext()) {
Map.Entry, String> next = iterator.next();
String key = next.getKey();
String value = https://www.it610.com/article/next.getValue();
System.out.println(key +"=" + value);
}describe.put("testKey", "testValue");
User user2 = new User();
BeanUtils.populate(user2, describe);
System.out.println("populate后的对象:" + user2);
//describe.clear();
User user3 = new User();
describe.remove("id");
BeanUtils.populate(user3, describe);
System.out.println(user3);
User user4 = new User();
BeanUtils.copyProperties(user4, user);
System.out.println(user4);
String[] names = BeanUtils.getArrayProperty(user, "name");
for (String item : names) {
System.out.println(item);
}String[] subject = {"生物", "语文", "数学", "英语", "地理"};
user.setSubject(subject);
String[] subjects = BeanUtils.getArrayProperty(user, "subject");
for (String item : subjects) {
System.out.println(item);
}String subjectName = BeanUtils.getSimpleProperty(user, "name");
System.out.println(subjectName);
subjectName = BeanUtils.getSimpleProperty(user, "subject");
System.out.println(subjectName);
subjectName = BeanUtils.getIndexedProperty(user, "subject[0]");
System.out.println(subjectName);
subjectName = BeanUtils.getIndexedProperty(user, "subject", 1);
System.out.println(subjectName);
Map, String> contactDetails = Maps.newHashMap();
contactDetails.put("1", "13550124568");
contactDetails.put("2", "13550124567");
contactDetails.put("3", "13550124566");
contactDetails.put("4", "13550124565");
user.setContactDetails(contactDetails);
String mappedProperty = BeanUtils.getMappedProperty(user, "contactDetails(2)");
System.out.println(mappedProperty);
mappedProperty = BeanUtils.getMappedProperty(user, "contactDetails", "1");
System.out.println(mappedProperty);
}
}
@Data
@ToString(callSuper = true)
public class User extends Parent{private Integer id;
private String name;
private String[] subject;
private Map,String> contactDetails;
}
@Data
public class Parent {private String father;
private String mother;
}
推荐阅读
- Crack|vectordraw图形库,提高了 WebGL 3D 渲染模式的性能
- 面试|你跳槽一次能涨多少(今天见识到跳槽天花板)
- Apache Ambari 项目或将被“雪藏”(只因没人愿意参与开发 | 提议已获“全票通过”)
- Apache Pulsar 社区年度盛会——Pulsar Summit Asia 重磅来袭!
- Apache|App-Launcher-Cordova-Plugin运行已经安装过的App整理
- SEO|apache服务器日志各项详细说明
- Apache
- php|利用nginx+apache+mysql+php+memcached+squid搭建门户网站
- Apache|关于apache工具类ArrayUtils的简单应用