package com.keuin.ohmyvanillamc; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; /** * @Author 落叶飞翔的蜗牛 * @Date 2018/3/10 * @Description 常用反射函数 */ public final class ReflectionUtils { /** * 获取私有成员变量的值 * * @param instance * @param filedName * @return */ public static Object getPrivateField(Object instance, String filedName) throws NoSuchFieldException, IllegalAccessException { Field field = instance.getClass().getDeclaredField(filedName); field.setAccessible(true); return field.get(instance); } /** * 设置私有成员的值 * * @param instance * @param fieldName * @param value * @throws NoSuchFieldException * @throws IllegalAccessException */ public static void setPrivateField(Object instance, String fieldName, Object value) throws NoSuchFieldException, IllegalAccessException { Field field = instance.getClass().getDeclaredField(fieldName); field.setAccessible(true); field.set(instance, value); } /** * 访问私有方法 * * @param instance * @param methodName * @param classes * @param args * @return * @throws NoSuchMethodException * @throws InvocationTargetException * @throws IllegalAccessException */ public static Object invokePrivateMethod(Object instance, String methodName, Class[] classes, Object... args) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException { Method method = instance.getClass().getDeclaredMethod(methodName, classes); method.setAccessible(true); return method.invoke(instance, args); } }