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

com.virjar.ratel.api.DexMakerProxyBuilderHelper Maven / Gradle / Ivy

Go to download

ratel api,used for developer on ratel system,an extension for xposed framewrok,ratel api compatable with original xposed framework

There is a newer version: 1.3.6
Show newest version
package com.virjar.ratel.api;

import com.virjar.ratel.api.hint.RatelEngineHistory;
import com.virjar.ratel.api.hint.RatelEngineVersion;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;

@RatelEngineVersion(RatelEngineHistory.V_1_2_8)
public interface DexMakerProxyBuilderHelper {
    /**
     * 创建一个aop代理构造器
     *
     * @param clazz 对应class,如代理InputStream
     * @param    任意class类型
     * @return builder实例
     */
     DexMakerProxyBuilder forClass(Class clazz);

    /**
     * 判断一个class是不是aop代理产生的class
     *
     * @param c 待测试的class
     * @return 测试结果,是否为代理class
     */
    boolean isProxyClass(Class c);

    /**
     * 调用supper方法,由于我们继承了方法,在AOP场景下,我们还需要call origin。我们可能只是修改参数或者拦截返回值
     *
     * @param proxy  当前的代理对象
     * @param method 当前调用方法
     * @param args   参数
     * @return 方法调用结果
     * @throws Throwable 可能抛出异常
     */
    Object callSuper(Object proxy, Method method, Object... args) throws Throwable;

    /**
     * InvocationHandler是动态代理机制里面很重要的一个概念,通过他处理AOP的实际业务逻辑,一般很少使用
     *
     * @param instance 代理对象
     * @return 获取对应的 InvocationHandler
     */
    InvocationHandler getInvocationHandler(Object instance);

    /**
     * 给代理对象替换handler,一般很少使用
     *
     * @param instance 代理对象
     * @param handler  新的handler
     */
    void setInvocationHandler(Object instance, InvocationHandler handler);
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy