您的位置:首页 > 编程语言 > Java开发

java反射之二,使用java自带的jar实现

2015-11-27 09:25 441 查看
在JavaBean中,有时候我们希望给实体类动态给值,而非挨个使用大量代码进行set,get,这样的方式很占用程序开发的时间,所以java的开发jar中有了这样的一个jar commons-beanutils这个jar,这个jar正好可以满足我们需求

即JavaBean的反射

package com.shtoone.qms.util;

import java.beans.PropertyDescriptor;

import org.apache.commons.beanutils.PropertyUtils;
import org.jeecgframework.core.util.StringUtil;

import com.shtoone.qms.entity.bhz.XiangxixxEntity;

public class PropertyDescriptorUtil {
	public static void main(String[] args) {
		//测试JavaBean的反射机制
		XiangxixxEntity xiangxixx=new XiangxixxEntity();
		//xiangxixx.setBaocunshijian("2013-12-09");
		xiangxixx.setFeimeihui4Lilunzhi("123.34456");
		Object obj=xiangxixx;
		PropertyDescriptor origDescriptors[] = PropertyUtils.getPropertyDescriptors(obj);
		String aliasName, name, type;
		for (int i = 0; i < origDescriptors.length; i++) {
			try{
			//这里通过三元运算符
			aliasName = ("".equals("") ? "" : "" + ".")+ origDescriptors[i].getName();
//			System.out.println("字段名:"+origDescriptors[i].getName()+"\t字段类型:"+origDescriptors[i].getPropertyType().toString()+"\t"+aliasName);
			
			//判断JavaBean中属性值是否为只读的,即没有get方法
//			System.out.println(PropertyUtils.isReadable(obj, origDescriptors[i].getName()));
			
			//
			if(StringUtil.isNotEmpty(PropertyUtils.getSimpleProperty(obj, origDescriptors[i].getName()))){
				if(origDescriptors[i].getPropertyType().toString().contains("class java.lang") ||
				   origDescriptors[i].getPropertyType().toString().contains("class java.math")){
					System.out.println("value:"+String.format("%1$.2f", Double.parseDouble(PropertyUtils.getSimpleProperty(obj, origDescriptors[i].getName()).toString())));
				}
			}
				
//				System.out.println("---------");
//				System.out.println("value22:"+PropertyUtils.getProperty(obj, origDescriptors[i].getName()));
			}catch(Exception ex){}
		}
		
		
	}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: