码迷,mamicode.com
首页 > 数据库 > 详细

DirectFieldAccessor的使用场景(好多图)

时间:2020-01-16 11:03:07      阅读:106      评论:0      收藏:0      [点我收藏+]

标签:name   test   getname   lda   通过   sys   导致   ble   des   

1、背景:

在项目中遇到某实例中的某个属性被声明为private ,而且实体类中,不提供该属性的get方法,导致无法通过get获取该属性值。这个时候,我们可以利用DirectFieldAccessor这个类进行获取我们想要的属性值。

2、DirectFieldAccessor的作用

它的功能是直接操作Bean的属性值,代替使用get/set方法去操作Bean。

3、使用案例

class User {

    private int id ;

    private Ving ving = new Ving();

    public User(int id) {
        this.id = id;
    }
}

class Ving{
    public int activeCount = 6;
}

public class TestDirectClass {

    @Test
    public void testDirectFieldAccessor() {
        User user = new User(111);

        DirectFieldAccessor accessor = new DirectFieldAccessor(user);
        TypeDescriptor id = accessor.getPropertyTypeDescriptor("id");
        System.out.println(id.getName());
        Object idValue = accessor.getPropertyValue("id");
        System.out.println("idValue:" +idValue);

        Ving ving = (Ving)accessor.getPropertyValue("ving");
        System.out.println(ving.activeCount);

    }

    @Test
    public void testPropertyAccessorFactory() {
        User user = new User(111);

        ConfigurablePropertyAccessor configurablePropertyAccessor = PropertyAccessorFactory.forDirectFieldAccess(user);

        TypeDescriptor id = configurablePropertyAccessor.getPropertyTypeDescriptor("id");

        System.out.println(id.getName());

        Object idValue = configurablePropertyAccessor.getPropertyValue("id");
        System.out.println("idValue:" +idValue);

        Ving ving = (Ving)configurablePropertyAccessor.getPropertyValue("ving");
        System.out.println(ving.activeCount);


    }
}

DirectFieldAccessor的使用场景(好多图)

标签:name   test   getname   lda   通过   sys   导致   ble   des   

原文地址:https://www.cnblogs.com/vingLiu/p/12199860.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!