Java反射遇到接口

本文介绍了在Java中如何使用反射处理接口参数的问题,通过动态代理和InvocationHandler实现回调值的获取。详细阐述了场景需求、基本分析,并通过代码示例展示了创建MyHandler类实现InvocationHandler接口以及利用Proxy类关联接口和处理类的过程。

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

Java反射遇到接口

本文适合有点Java反射基础的同学,在Java反射调用方法时遇到接口参数是一件很蛋疼的事情。
在反射调用方法时需要传参数,像传递基本数据类型进去用就完事,传个对象进去怎么整都没关系,因为你在外部有对象的引用,但 如果需要你传递接口参数,而且这个接口类也是你反射得到的,那怎么拿到接口回调的值呢? 下面通过一个例子告诉你咋整。

场景和需求

场景:假设我是提供方A,有个业务方B,提供ID方C。
其中提供ID方C有如下代码来提供ID。

// IdManager类
public class IdManager {
   
    private String id;
    private static volatile IdManager mInstance;

    private IdManager() {
   
    }

    public static IdManager getInstance() {
   
        if (mInstance == null) {
   
            synchronized (IdManager.class) {
   
                if (mInstance == null) {
   
                    mInstance = new IdManager();
                }
            }
        }
        return mInstance;
    }

    public void setId(String id) {
   
        this.id = id;
    }

    // 加锁是防止多线程调用造成多次开启子线程
    public synchronized void getId(Callback callback) {
   
        if (id == null || id.isEmpty()) {
   
            new Thread(new Runnable() {
   
                @Override
                public void run
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值