1、定义两个bean类
(1) 第一个
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Person {
private String username;
private int age;
private float stature;//身高
private boolean sex;//性别
@SuppressWarnings("unchecked")
private List list = new ArrayList();
private String[] friendsNames;
private Map<String, String> maps = new HashMap<String, String>();
private Address address;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public float getStature() {
return stature;
}
public void setStature(float stature) {
this.stature = stature;
}
public boolean isSex() {
return sex;
}
public void setSex(boolean sex) {
this.sex = sex;
}
@SuppressWarnings("unchecked")
public List getList() {
return list;
}
@SuppressWarnings("unchecked")
public void setList(List list) {
this.list = list;
}
public Address getAddress() {
return address;
}
public void setAddress(Address address) {
this.address = address;
}
public Map<String, String> getMaps() {
return maps;
}
public void setMaps(Map<String, String> maps) {
this.maps = maps;
}
public String[] getFriendsNames() {
return friendsNames;
}
public void setFriendsNames(String[] friendsNames) {
this.friendsNames = friendsNames;
}
}
(2)第二个
import java.util.List;
public class Address {
private String email;
private List<String> telephone;
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public List<String> getTelephone() {
return telephone;
}
public void setTelephone(List<String> telephone) {
this.telephone = telephone;
}
}
3、测试类
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.commons.beanutils.PropertyUtils;
public class PersonTest {
@SuppressWarnings("unchecked")
public static void main(String[] args) {
Person person = new Person();
try {
//simple property
PropertyUtils.setSimpleProperty(person, "username", "李四");
PropertyUtils.setSimpleProperty(person, "age", 22);
PropertyUtils.setSimpleProperty(person, "stature", 173.5f);
PropertyUtils.setSimpleProperty(person, "sex", new Boolean(false));
//index property
//List
List list = new ArrayList();
list.add("list value 0");
list.add("list value 1");
String listValue2 = "new list value 1";
PropertyUtils.setSimpleProperty(person, "list", list);
//将list设置到person之后,可以对里面的值进行修改
PropertyUtils.setIndexedProperty(person, "list[1]", listValue2);
//数组
String[] str = {"张三", "王五", "赵钱"};
person.setFriendsNames(str);
PropertyUtils.setIndexedProperty(person, "friendsNames[2]", "new赵钱");
//Map
Map<String, String> map = new HashMap<String, String>();
map.put("key1", "vlaue1");
map.put("key2", "vlaue2");
map.put("key3", "vlaue3");
person.setMaps(map);
PropertyUtils.setMappedProperty(person, "maps", "key1", "new value1");
PropertyUtils.setMappedProperty(person, "maps(key2)", "maps(key2) value");
//nest property
Address address = new Address();
address.setEmail("jhlishero@163.com");
List<String> telephoneList = new ArrayList<String>();
telephoneList.add("12345678911");
telephoneList.add("92345678911");
address.setTelephone(telephoneList);
person.setAddress(address);
PropertyUtils.setNestedProperty(person, "address.telephone[1]", "nest 11111111");
PropertyUtils.setNestedProperty(person, "address.email", "new_jhlishero@163.com");
System.out.println(PropertyUtils.getSimpleProperty(person, "username"));
System.out.println(PropertyUtils.getSimpleProperty(person, "age"));
System.out.println(PropertyUtils.getSimpleProperty(person, "stature"));
System.out.println(PropertyUtils.getSimpleProperty(person, "sex"));
System.out.println(PropertyUtils.getSimpleProperty(person, "list"));
//list
System.err.println(PropertyUtils.getIndexedProperty(person, "list[0]"));
System.err.println(PropertyUtils.getIndexedProperty(person, "list", 1));
//数组
System.out.println(PropertyUtils.getIndexedProperty(person, "friendsNames[0]"));
System.out.println(PropertyUtils.getIndexedProperty(person, "friendsNames", 1));
System.out.println(PropertyUtils.getIndexedProperty(person, "friendsNames[2]"));
//Map
System.err.println(PropertyUtils.getMappedProperty(person, "maps(key1)"));
System.err.println(PropertyUtils.getMappedProperty(person, "maps", "key2"));
System.err.println(PropertyUtils.getMappedProperty(person, "maps(key3)"));
//nest--嵌套输出
System.out.println(PropertyUtils.getNestedProperty(person, "address.email"));
System.out.println(PropertyUtils.getNestedProperty(person, "address.telephone[0]"));
System.out.println(PropertyUtils.getNestedProperty(person, "address.telephone[1]"));
//也可以使用如下方法获取值
System.out.println(PropertyUtils.getProperty(person, "address.telephone[1]"));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
4、输出结果
李四
22
173.5
false
[list value 0, new list value 1]
list value 0
new list value 1
张三
王五
new赵钱
new value1
new_jhlishero@163.com
12345678911
nest 11111111
nest 11111111
maps(key2) value
vlaue3
分享到:
相关推荐
综合来看,Apache BeanUtils和PropertyUtils适合简单的Bean复制,它们易于理解和使用,但在大规模复制时性能不佳。Spring BeanUtils在Spring生态系统中提供了更多灵活性,但性能仍然受限于反射。Cglib BeanCopier在...
在Java开发中,Apache Commons BeanUtils库是一个非常实用的工具包,它提供了许多方便的方法来操作JavaBeans。本文将深入探讨`...理解和熟练掌握`BeanUtilsBean`的使用,对于提升Java开发效率是非常有益的。
本文将重点讨论 Lombok 的使用场景以及如何替代 BeanUtils 和 PropertyUtils 进行属性复制。 #### 二、BeanUtils.copyProperties 与 PropertyUtils.copyProperties 的用法及区别 在 Java 开发中,经常会遇到需要...
2. 使用`PropertyUtils`:创建一个JavaBean对象,然后调用`PropertyUtils.getProperty()`和`PropertyUtils.setProperty()`方法,分别用于读取和设置属性。例如,假设我们有一个名为`Person`的JavaBean,包含`name`...
然而,直接使用Java API(如`java.lang.reflect`)进行操作虽然可行,但代码复杂度较高,容易出错,且不易维护。因此,BeanUtils应运而生,它通过封装反射机制,提供了一套易于使用的API,大大降低了开发难度。 ###...
在使用该方法进行Java对象转Map时,可能会发生以下错误: `Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/collections/Transformer` 该错误是由于commons-collections.jar包...
在某些情况下,JSON对象中的字段名可能与Java Bean的getter/setter方法名称不匹配,此时可以通过使用`PropertyUtils`类来自定义转换规则。例如,JSON中的"birthDate"字段对应Java对象中的"birthday"属性: ```java...
2. **属性访问**:`PropertyUtils`类提供了对Java对象属性的无反射访问,可以方便地获取、设置和删除属性。 3. **类型转换**:BeanUtils在属性复制时自动处理类型转换,使得不同类型的属性之间可以进行赋值。 4. *...
例如,可以使用PropertyUtils.getIndexedProperty()获取特定索引的属性,PropertyUtils.setIndexedProperty()用于设置索引属性的值。 - **locale 和 converters**: BeanUtils提供了对本地化数据的支持,允许开发者...
3. **环境变量和系统属性的混合使用**:库可以智能地处理环境变量和系统属性,允许开发者在配置文件中使用环境变量或者系统属性的占位符,提升代码的可移植性和可配置性。 4. **加密和解密属性**:对于敏感信息,如...
3. **类型转换**:BeanUtils内部使用了`PropertyUtils`类来处理属性的类型转换,当源对象和目标对象的属性类型不一致时,它会尝试进行自动类型转换。然而,这种转换并不总是成功,对于一些复杂类型的转换,可能需要...
例如,`PropertyUtils.getProperty()`和`PropertyUtils.setProperty()`方法可以无须手动创建setter和getter方法,直接通过属性名操作对象的属性值。 2. **类型转换:** BeanUtils包含了一套强大的类型转换机制,能...
4. 最后,我们可以使用PropertyUtils.setProperty()或直接调用DynaBean的set()方法来设置属性值。设置完属性后,我们就可以像操作普通JavaBean一样使用这个DynaBean了,只是访问属性时使用get()方法和属性名,而不是...
`getProperty()`和`setProperty()`方法展示了如何通过反射和PropertyDescriptor类直接访问和修改属性,而BeanUtils和PropertyUtils的使用则更加简洁。 总之,JavaBean和BeanUtils工具类的结合使用极大地提高了代码...
- 在`PropertyUtils`类中,可以看到对`java.lang.reflect.Method`和`java.lang.reflect.Field`的大量使用,它们用于查找和调用对象的属性方法。 3. **异常处理策略** - BeanUtils在处理异常时,通常会捕获并包装...
通过`PropertyUtils.getProperty()`和`PropertyUtils.setProperty()`方法,可以实现对JavaBean属性的读写操作。 2. **类型转换**:BeanUtils具有自动类型转换的能力,它可以将字符串、数字等不同类型的值转换为...
- 在处理日期和时间属性时,BeanUtils提供了一种方便的方法来处理日期格式化问题,通过`PropertyUtils.setSimpleProperty()`和`PropertyUtils.getSimpleProperty()`方法。 6. **自定义转换** - 默认情况下,...
使用 org.apache.commons.beanutils.PropertyUtils.copyProperties() 方法可以将一个 bean 中的属性拷贝到另一个 bean 中。这个方法的第一个参数是目标 bean,第二个参数是源 bean。这种方法的特点是: * 性能问题...
例如,`PropertyUtils.getProperty()`和`PropertyUtils.setProperty()`可以用来获取和设置属性值。 3. **类型转换**: BeanUtils库还包含一个强大的类型转换机制,允许在不同数据类型之间自动转换,如`ConvertUtils....
具体使用CORS-filter-1.7.jar时,开发者需要在Web应用的web.xml配置文件中定义一个过滤器,设置允许的源、请求方法、暴露的头部等参数。例如: ```xml <filter-name>CORSFilter <filter-class>...