`
zhaobin87
  • 浏览: 77536 次
  • 来自: 深圳
社区版块
存档分类
最新评论

PropertyUtils的使用(转)

    博客分类:
  • Java
阅读更多

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

 

分享到:
评论
2 楼 zhaobin87 2011-12-10  
北极光之吻 写道
好厉害

懂了就好。
1 楼 北极光之吻 2011-12-07  
好厉害

相关推荐

    Bean复制的几种框架性能比较(Apache BeanUtils、PropertyUtils,Spring BeanUtils,Cglib BeanCopier

    综合来看,Apache BeanUtils和PropertyUtils适合简单的Bean复制,它们易于理解和使用,但在大规模复制时性能不佳。Spring BeanUtils在Spring生态系统中提供了更多灵活性,但性能仍然受限于反射。Cglib BeanCopier在...

    BeanUtilsBean对象复制使用(类型可以自动转化)

    在Java开发中,Apache Commons BeanUtils库是一个非常实用的工具包,它提供了许多方便的方法来操作JavaBeans。本文将深入探讨`...理解和熟练掌握`BeanUtilsBean`的使用,对于提升Java开发效率是非常有益的。

    lomok.docx

    本文将重点讨论 Lombok 的使用场景以及如何替代 BeanUtils 和 PropertyUtils 进行属性复制。 #### 二、BeanUtils.copyProperties 与 PropertyUtils.copyProperties 的用法及区别 在 Java 开发中,经常会遇到需要...

    commons-beanutils-1.7.0.jar.zip

    2. 使用`PropertyUtils`:创建一个JavaBean对象,然后调用`PropertyUtils.getProperty()`和`PropertyUtils.setProperty()`方法,分别用于读取和设置属性。例如,假设我们有一个名为`Person`的JavaBean,包含`name`...

    BeanUtils详细解说

    然而,直接使用Java API(如`java.lang.reflect`)进行操作虽然可行,但代码复杂度较高,容易出错,且不易维护。因此,BeanUtils应运而生,它通过封装反射机制,提供了一套易于使用的API,大大降低了开发难度。 ###...

    java中实现map与对象相互转换的几种实现

    在使用该方法进行Java对象转Map时,可能会发生以下错误: `Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/collections/Transformer` 该错误是由于commons-collections.jar包...

    JSON 与对象、集合之间的转换的示例

    在某些情况下,JSON对象中的字段名可能与Java Bean的getter/setter方法名称不匹配,此时可以通过使用`PropertyUtils`类来自定义转换规则。例如,JSON中的"birthDate"字段对应Java对象中的"birthday"属性: ```java...

    Java工具类之Apache的Commons Lang和BeanUtils

    2. **属性访问**:`PropertyUtils`类提供了对Java对象属性的无反射访问,可以方便地获取、设置和删除属性。 3. **类型转换**:BeanUtils在属性复制时自动处理类型转换,使得不同类型的属性之间可以进行赋值。 4. *...

    BeanUtils详细讲解.pdf

    例如,可以使用PropertyUtils.getIndexedProperty()获取特定索引的属性,PropertyUtils.setIndexedProperty()用于设置索引属性的值。 - **locale 和 converters**: BeanUtils提供了对本地化数据的支持,允许开发者...

    java-property-utils-1.9.jar

    3. **环境变量和系统属性的混合使用**:库可以智能地处理环境变量和系统属性,允许开发者在配置文件中使用环境变量或者系统属性的占位符,提升代码的可移植性和可配置性。 4. **加密和解密属性**:对于敏感信息,如...

    BeanUtils jar包+源码

    3. **类型转换**:BeanUtils内部使用了`PropertyUtils`类来处理属性的类型转换,当源对象和目标对象的属性类型不一致时,它会尝试进行自动类型转换。然而,这种转换并不总是成功,对于一些复杂类型的转换,可能需要...

    -beanutils-1.9.4.zip

    例如,`PropertyUtils.getProperty()`和`PropertyUtils.setProperty()`方法可以无须手动创建setter和getter方法,直接通过属性名操作对象的属性值。 2. **类型转换:** BeanUtils包含了一套强大的类型转换机制,能...

    有关动态bean的一些用法

    4. 最后,我们可以使用PropertyUtils.setProperty()或直接调用DynaBean的set()方法来设置属性值。设置完属性后,我们就可以像操作普通JavaBean一样使用这个DynaBean了,只是访问属性时使用get()方法和属性名,而不是...

    JavaBean和beanutils工具类的学习

    `getProperty()`和`setProperty()`方法展示了如何通过反射和PropertyDescriptor类直接访问和修改属性,而BeanUtils和PropertyUtils的使用则更加简洁。 总之,JavaBean和BeanUtils工具类的结合使用极大地提高了代码...

    commons-beanutils 源码

    - 在`PropertyUtils`类中,可以看到对`java.lang.reflect.Method`和`java.lang.reflect.Field`的大量使用,它们用于查找和调用对象的属性方法。 3. **异常处理策略** - BeanUtils在处理异常时,通常会捕获并包装...

    commons-beanutils-1.8.0

    通过`PropertyUtils.getProperty()`和`PropertyUtils.setProperty()`方法,可以实现对JavaBean属性的读写操作。 2. **类型转换**:BeanUtils具有自动类型转换的能力,它可以将字符串、数字等不同类型的值转换为...

    Beanutils相关资料

    - 在处理日期和时间属性时,BeanUtils提供了一种方便的方法来处理日期格式化问题,通过`PropertyUtils.setSimpleProperty()`和`PropertyUtils.getSimpleProperty()`方法。 6. **自定义转换** - 默认情况下,...

    浅谈java对象之间相互转化的多种方式

    使用 org.apache.commons.beanutils.PropertyUtils.copyProperties() 方法可以将一个 bean 中的属性拷贝到另一个 bean 中。这个方法的第一个参数是目标 bean,第二个参数是源 bean。这种方法的特点是: * 性能问题...

    commons-beanutils所有版本(1.0-1.9.2).zip

    例如,`PropertyUtils.getProperty()`和`PropertyUtils.setProperty()`可以用来获取和设置属性值。 3. **类型转换**: BeanUtils库还包含一个强大的类型转换机制,允许在不同数据类型之间自动转换,如`ConvertUtils....

    cors-filter-1.7.jar,java-property-utils-1.9.jar两个包供学习使用.rar

    具体使用CORS-filter-1.7.jar时,开发者需要在Web应用的web.xml配置文件中定义一个过滤器,设置允许的源、请求方法、暴露的头部等参数。例如: ```xml &lt;filter-name&gt;CORSFilter &lt;filter-class&gt;...

Global site tag (gtag.js) - Google Analytics