DirectFieldAccessor的使用场景(好多图)

Posted 邂逅那青春

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DirectFieldAccessor的使用场景(好多图)相关的知识,希望对你有一定的参考价值。

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的使用场景(好多图)的主要内容,如果未能解决你的问题,请参考以下文章

Kafka使用场景

base64用法和使用场景

Mongodb 使用场景和不使用场景

mongodb 使用场景和不使用场景

Specflow:对场景和场景大纲使用相同的步骤定义

多线程在项目中经常使用的5种场景