/** * Removes the final modifier from a {@link Field}. * * @param field * to remove the final modifier * @throws IllegalArgumentException * if the field is {@code null} * @since 3.2 */ public static void removeFinalModifier(final Field field) { removeFinalModifier(field, true); }
@Test public void testRemoveFinalModifierWithAccess() throws Exception { final Field field = StaticContainer.class.getDeclaredField("IMMUTABLE_PRIVATE_2"); assertFalse(field.isAccessible()); assertTrue(Modifier.isFinal(field.getModifiers())); FieldUtils.removeFinalModifier(field, true); // The field is no longer final assertFalse(Modifier.isFinal(field.getModifiers())); assertFalse(field.isAccessible()); }
@Test public void testRemoveFinalModifierWithoutAccess() throws Exception { final Field field = StaticContainer.class.getDeclaredField("IMMUTABLE_PRIVATE_2"); assertFalse(field.isAccessible()); assertTrue(Modifier.isFinal(field.getModifiers())); FieldUtils.removeFinalModifier(field, false); // The field is STILL final because we did not force access assertTrue(Modifier.isFinal(field.getModifiers())); assertFalse(field.isAccessible()); }
@Test public void testRemoveFinalModifierAccessNotNeeded() throws Exception { final Field field = StaticContainer.class.getDeclaredField("IMMUTABLE_PACKAGE"); assertFalse(field.isAccessible()); assertTrue(Modifier.isFinal(field.getModifiers())); FieldUtils.removeFinalModifier(field, false); // The field is no longer final AND we did not need to force access assertTrue(Modifier.isFinal(field.getModifiers())); assertFalse(field.isAccessible()); }
@Test public void testRemoveFinalModifier() throws Exception { final Field field = StaticContainer.class.getDeclaredField("IMMUTABLE_PRIVATE_2"); assertFalse(field.isAccessible()); assertTrue(Modifier.isFinal(field.getModifiers())); FieldUtils.removeFinalModifier(field); // The field is no longer final assertFalse(Modifier.isFinal(field.getModifiers())); assertFalse(field.isAccessible()); }
public static void resetClock(final Class<?> clazz) throws IllegalAccessException { System.clearProperty(ClockFactory.PROPERTY_NAME); final Field field = FieldUtils.getField(clazz, "CLOCK", true); FieldUtils.removeFinalModifier(field, true); FieldUtils.writeStaticField(field, ClockFactory.getClock(), false); }
/** * Removes the final modifier from a {@link Field}. * * @param field * to remove the final modifier * @throws IllegalArgumentException * if the field is {@code null} * @since 3.2 */ public static void removeFinalModifier(final Field field) { removeFinalModifier(field, true); }
/** * Removes the final modifier from a {@link Field}. * * @param field * to remove the final modifier * @throws IllegalArgumentException * if the field is {@code null} * @since 3.2 */ public static void removeFinalModifier(final Field field) { removeFinalModifier(field, true); }
/** * Removes the final modifier from a {@link Field}. * * @param field * to remove the final modifier * @throws IllegalArgumentException * if the field is {@code null} * @since 3.2 */ public static void removeFinalModifier(final Field field) { removeFinalModifier(field, true); }
FieldUtils.removeFinalModifier(f); f.set(null, "3.0"); } catch (Exception e) {