博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java使用PropertyDescriptor获取实体类中私有属性的值,并给私有属性赋值
阅读量:5878 次
发布时间:2019-06-19

本文共 2291 字,大约阅读时间需要 7 分钟。

大家都知道Java类中的私有的(private)属性是获取不到的(即使使用继承依然获取不到),那如果非要获取私有属性的值怎么办呢?一般的做法是将该java类封装称为一个JavaBean,即封装该私有属性,提供一对共有的get,set方法来访问私有属性。一般情况下都会这样做!但遇到特殊情况呢?比如,先现有一个需求:访问一个Java类的私有属性,并且该类不提供访问该私有属性的共有方法!下面就为大家介绍一种方法访问java类的私有属性。

 

要获取java类的私有属性就不得不先介绍一个类PropertyDescriptor。该类为属性描述符类。通过该类提供的一系列方法来访问java类中的私有属性。

 

 下面看一段代码:

BeanUtils.java

package yw.javaben;import java.beans.PropertyDescriptor;import java.lang.reflect.Method;/** * 获取私有属性值JavaBean的帮助类 * @author yw-tony * */public class BeanUtils {    private PropertyDescriptor dp = null;    private String propertyName;    private Object obj;    /**     * 构造方法     * @param objName 属性名称     * @param obj  要操作的对象     */    public BeanUtils(String objName,Object obj){        try{            this.propertyName = objName;            this.obj = obj;            dp = new PropertyDescriptor(propertyName, obj.getClass());        }catch(Exception e){            e.printStackTrace();        }    }    /**     * 获取javabean私有属性的值     * @return     * @throws Exception     */    public Object getProperty() throws Exception {        //获取对象属性方法        Method method = dp.getReadMethod();        //获取属性对应的值        Object retValue = method.invoke(obj);                return retValue;    }    /**     * 设置私有属性的值     * @param setValue     * @throws Exception     */    public void setProperty(Object setValue) throws Exception {        Method method = dp.getWriteMethod();        method.invoke(obj, setValue);    }        }

BeanEntity.java

package yw.javaben;/** * 验证属性标识符的javabean * @author yw-tony * */public class BeanEntity {    private int x;    private int y = 10;    public int getX() {        return x;    }    public void setX(int x) {        this.x = x;    }    public int getY() {        return y;    }    public void setY(int y) {        this.y = y;    }    }

JavaBeanTest.java

public class JavaBeanTest {    /**     * 测试JavaBean     *      * @param args     */    public static void main(String[] args) throws Exception {        BeanEntity bean = new BeanEntity();        String x = "x";//BeanEntity的属性名称        BeanUtils utils = new BeanUtils(x, bean);        utils.setProperty(12);        Object value = utils.getProperty();        System.out.println(value);    } }

 

                            

转载于:https://www.cnblogs.com/tony-yang-flutter/p/3485690.html

你可能感兴趣的文章
Python学习笔记
查看>>
java String
查看>>
renhook的使用
查看>>
Linux学习笔记(十二)--命令学习(用户创建、删除等)
查看>>
DOCKER windows 7 详细安装教程
查看>>
养眼美女绿色壁纸
查看>>
U盘启动盘制作工具箱 v1.0
查看>>
增强myEclipse的提示功能
查看>>
Zabbix汉化方法
查看>>
Java I/O系统基础知识
查看>>
Java多线程设计模式(2)生产者与消费者模式
查看>>
基于whoosh的flask全文搜索插件flask-msearch
查看>>
对象并不一定都是在堆上分配内存的
查看>>
刘宇凡:罗永浩的锤子情怀只能拿去喂狗
查看>>
php晚了8小时 PHP5中的时间相差8小时的解决办法
查看>>
JS(JavaScript)的初了解7(更新中···)
查看>>
svn文件管理器的使用
查看>>
Ansible playbook 使用
查看>>
for/foreach/linq执行效率测试
查看>>
js /jquery停止事件冒泡和阻止浏览器默认事件
查看>>