美文网首页
Android开发反射学习

Android开发反射学习

作者: Junker_ | 来源:发表于2022-10-10 16:54 被阅读0次
    /**
     * 通过反射获取未公开的方法
     *
     * @param clazz      需要反射获取的类名
     * @param clsMethod  参数名
     * @param methodName 方法名
     * @param obj        需要赋值的对象
     * @param value      待设置的值
     */
    private static void getMethodByReflection(final Class<?> clazz, final Class<?> clsMethod, final String methodName, Object obj, Object value) {
        if (null == clazz || null == clsMethod || null == methodName || null == obj) {
            JLog.e(TAG, "getMethodByReflection has parameter is null ");
            return;
        }
    
        try {
            Method method = clazz.getDeclaredMethod(methodName, clsMethod);
            // 私有方法赋予权限
            method.setAccessible(true);
            method.invoke(obj, value);
        } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) {
            JLog.e(TAG, "getMethodByReflection error: " + e.getMessage());
        }
    }
    
    private static void getFieldByReflection(final Class<?> clazz, final String fieldName, Object obj, Object value){
        try {
            Field path = clazz.getDeclaredField(fieldName);
            path.setAccessible(true);//启用私有变量可赋值权限
            path.set(obj,value);
        } catch (NoSuchFieldException|IllegalAccessException e) {
            e.printStackTrace();
        }
    }

    相关文章

      网友评论

          本文标题:Android开发反射学习

          本文链接:https://www.haomeiwen.com/subject/kglzartx.html