跨项目 调用类 java_java(Android)跨Module调用对应类方法需求解决方案

在开发组件化项目中,遇到一个这样的问题,两个不同的Module相互之间没有任何直接依赖关系,现在需求是需要在Module_A中调用Module_B中的某个类的方法,以下为解决此问题的方法;

采用的核心技术:路由、反射;

解决问题的过程,首先将需要调用的类通过路由注册,注册到路由中心,这里讲Module_B中的类注册到了路由中心,在Module_A中首先先通过路由中心获取到已经注册了的Module_B的类,获取到Class后通过反射原理获取当前对象实例,然后继续通过反射调用调用当前实例对象的对应方法(支持无参方法及有参方法),至此调用方法已实现,具体示例如下:1、路由注册工具类:/*** Class类路由注册工具类

* Created by sun.li on 2018/7/6.

*

*@authorsun.li*/

public class RouterClassUtil implements RouterInter>{private ConcurrentHashMap> mClassZ = newConcurrentHashMap();private ConcurrentHashMap mClassA = newConcurrentHashMap();private staticRouterClassUtil mInstance;privateRouterClassUtil() {

}public staticRouterClassUtil getInstance() {if(null ==mInstance) {synchronized(RouterActivity.class) {if(null ==mInstance) {

mInstance= newRouterClassUtil();

}

}

}returnmInstance;

}

@Overridepublic voidrouterT(String key, Object obj) {

Object cacheActivity= this.mClassA.get(key);if(null == cacheActivity || obj !=cacheActivity) {this.mClassA.put(key, obj);

}

}

@OverridepublicObject invokT(String key) {return this.mClassA.get(key);

}

@Overridepublic void routerV(String key, Class>aClass) {

Clas

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值