All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.amygdalum.xrayinterface.FinalUtil Maven / Gradle / Ivy

Go to download

An application to get controlled access to private fields and methods of Java classes

The newest version!
package net.amygdalum.xrayinterface;

import java.lang.reflect.Field;
import java.lang.reflect.Modifier;

public final class FinalUtil {

	private static final String MODIFIERS = "modifiers";

	private FinalUtil() {
	}

	public static boolean isFinal(Field field) {
		return (field.getModifiers() & Modifier.FINAL) == Modifier.FINAL;
	}

	public static void makeNonFinal(Field field) {
		try {
			Field modifiersField = Field.class.getDeclaredField(MODIFIERS);
			modifiersField.setAccessible(true);
			modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL);
		} catch (ReflectiveOperationException e) {
			throw new ReflectionFailedException(e);
		}
	}

	public static void ensureNonFinal(Field field) {
		if (isFinal(field)) {
			makeNonFinal(field);
		}
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy