java反射-BeanUtils.getFieldValue(object,property)

  本文给出两个函数:

   BeanUtils.getFieldValue(object,propertyName);//取出object对象中的propertyName属性的值.propertyName只能是object所在类中定义的,而不是其基类定义的

BeanUtils.getFieldValueInAllSuper(object,propertyName);//);//取出object对象中的propertyName属性的值.propertyName包括在object所在类的基类中定义的属性

  看代码:

   

public class BeanUtils {

  
    /**
     * 获取当前类声明的private/protected变量
     */
    static public Object getFieldValue(Object object, String propertyName)
            throws IllegalAccessException, NoSuchFieldException {
        Assert.notNull(object);
        Assert.hasText(propertyName);
        Field field = object.getClass().getDeclaredField(propertyName);
        field.setAccessible(true);

        return field.get(object);
    }
    /**
     * zhangpf :因为getFieldValue()方法,无法读取super class的属性的值;
     * 					所以本方法做出扩展,允许读取super class的属性的值;
     * @param object
     * @param propertyName
     * @return
     * @throws IllegalAccessException
     * @throws NoSuchFieldException
     */
    public static Object getFieldValueInAllSuper(Object object, String propertyName)
            throws IllegalAccessException, NoSuchFieldException {
        Assert.notNull(object);
        Assert.hasText(propertyName);
        Class claszz=object.getClass();
        Field field = null;
        
        do
        {	
        	try{
        		field = claszz.getDeclaredField(propertyName);
        	}
        	catch(NoSuchFieldException e)
        	{
        		//e.printStackTrace();
        		field=null;
        	}
    		claszz=claszz.getSuperclass();
        }
    	while(field==null&&claszz!=null);
    	
    	if(field==null) return null;
 
        field.setAccessible(true);
        return field.get(object);
    }
}

注:上面两个函数,也只是练习了一下自己对java反射的应用。在真实的项目开发过程中,我一般还是用commons-beanutils.jar包。

  其中提供了类似PropertyUtils和BeanUtils的工具类。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值