首页 > 解决方案 > 如何在最终类中模拟静态最终变量

问题描述

请注意:不要删除此线程/帖子,因为 StackOverflow 的任何页面都没有正确的答案。我的问题完全不同。

我想模拟一个最终类的私有静态最终字段

我已经尝试过使用 JUnit、EasyMock 或 PowerMock 模拟静态最终变量的解决方案

static void setFinalStatic(Field field, Object newValue) throws IllegalAccessException, NoSuchFieldException{ field.setAccessible(true);

    // remove final modifier from field
    Field modifiersField = Field.class.getDeclaredField("modifiers");
    modifiersField.setAccessible(true);
    modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL);

    field.set(null, newValue);
}

但它在“field.set(null, newValue);”处给了我 ExceptionInInitializerError

请指教

标签: reflection

解决方案


推荐阅读