Android 反射,动态代理

本文介绍了一种在Android中使用反射技术和接口代理的方法。通过具体的代码示例展示了如何利用反射来获取类实例并调用其方法,同时利用Java代理机制实现回调功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Android 反射,接口代理
简单的写一下,方便记忆

public class PayUtils implements InvocationHandler{

    private void pay() {
        Class<?> aClass = null;
        Class<?> iClass = null;
        try {
            //反射类地址
            aClass = Class.forName("*********");
            //接口地址
            iClass = Class.forName("*****.Listener");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }

        if (aClass != null && iClass != null) {

            try {
                //方法
                Method method = aClass.getMethod("get", Context.class);
                //获取实例
                Object payObject = method.invoke(aClass, activity);

                Class<?> payClass = payObject.getClass();
                //获取需要方法
                Method payMethod = payClass.getMethod("方法名", Activity.class, String.class, String.class, Bundle.class, iClass);

                Bundle extra = new Bundle();
                extra.putBoolean(PaymentManager.PAYMENT_KEY_IS_NO_ACCOUNT, true);

                //代理 类加载器,接口class,回掉 
                Object o = Proxy.newProxyInstance(PayUtils.class.getClassLoader(), new Class[]{iClass}, this);

                payMethod.invoke(payObject, activity, null, "传递值", extra, o);


            } catch (NoSuchMethodException e) {
                e.printStackTrace();
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            } catch (InvocationTargetException e) {
                e.printStackTrace();
            } catch (Exception e) {
                e.printStackTrace();
            }

        }
    }

    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        //回掉返回
        String name = method.getName();
        if (name.equals("onSuccess")) {

        } else if (name.equals("onFailed")) {
        }
        return null;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值