小编Sam*_*ssi的帖子

使用Reflection覆盖最终静态字段是否有限制?

我在一些单元测试中遇到了一个奇怪的行为反射最终静态场.以下是说明我的问题的示例.

我有一个基本的Singleton类,它包含一个Integer

public class BasicHolder {
    private static BasicHolder instance = new BasicHolder();

    public static BasicHolder getInstance() {
        return instance;
    }

    private BasicHolder() {
    }

    private final static Integer VALUE = new Integer(0);

    public Integer getVALUE() {
        return VALUE;
    }

}
Run Code Online (Sandbox Code Playgroud)

我的测试用例是循环并设置Reflection the VALUE到迭代索引,然后声明VALUE正确地等于迭代索引.

class TestStaticLimits {
    private static final Integer NB_ITERATION = 10_000;

    @Test
    void testStaticLimit() {

        for (Integer i = 0; i < NB_ITERATION; i++) {
            setStaticFieldValue(BasicHolder.class, "VALUE", i);
            Assertions.assertEquals(i, BasicHolder.getInstance().getVALUE(), "REFLECTION DID NOT WORK for iteration "+i); …
Run Code Online (Sandbox Code Playgroud)

java reflection

14
推荐指数
1
解决办法
279
查看次数

标签 统计

java ×1

reflection ×1