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