2022-07-25 19:33:39 +02:00
|
|
|
package com.falsepattern.lib.util;
|
2022-07-25 19:17:47 +02:00
|
|
|
|
|
|
|
|
import lombok.SneakyThrows;
|
|
|
|
|
|
|
|
|
|
import java.lang.reflect.Field;
|
|
|
|
|
import java.lang.reflect.Method;
|
|
|
|
|
import java.lang.reflect.Modifier;
|
|
|
|
|
|
|
|
|
|
public class ReflectionUtil {
|
|
|
|
|
private static final Field f_modifiers;
|
|
|
|
|
static {
|
|
|
|
|
try {
|
|
|
|
|
f_modifiers = Field.class.getDeclaredField("modifiers");
|
|
|
|
|
} catch (NoSuchFieldException e) {
|
|
|
|
|
throw new RuntimeException(e);
|
|
|
|
|
}
|
|
|
|
|
f_modifiers.setAccessible(true);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@SneakyThrows
|
|
|
|
|
public static void jailBreak(Field field) {
|
|
|
|
|
field.setAccessible(true);
|
|
|
|
|
f_modifiers.set(field, field.getModifiers() & ~Modifier.FINAL);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static void jailBreak(Method method) {
|
|
|
|
|
method.setAccessible(true);
|
|
|
|
|
}
|
|
|
|
|
}
|