反射的基本使用案例

反射的使用

注意:抽象类和接口类不适用,请绕行!!!!
反射常用场景:不同类里边有通用的方法需要灵活调用,这样可以方便减少代码的冗余,提高代码的可读性,但要慎用,根据实际情况判断是否使用;

作者使用场景:n多个不同名称的实现类里边有相同的一个方法且参数一致,
为了不让if,else堆积成山固然小编用了反射原理;话不多说,直接上代码;

![在这里插入图片描述](https://img-blog.csdnimg.cn/85e1caecddd64cd5b82c3f4d53d87cb4.png
在这里插入图片描述
看上图明显有一样的方法,那就让我们动态获取吧!!

  String serviceName = RemoteServiceEnum.getValue(electricityDTO.getOrgCode());
  Class<?> clazz2 = Class.forName("com.ccie.net.feignService." + serviceName);
  Method tbStatus = clazz2.getMethod("TbStatus", WtElectricityDTO.class);
  tbStatus.setAccessible(true);
  //因为接口和抽象类不能实例化,所以反射无法获取接口注入
  Object invoke = tbStatus.invoke(serviceXZ(serviceName), wtElectricityDTO);
  NetHallElectricityFzVO netHallElectricityFzVO = (NetHallElectricityFzVO) invoke;
 第一行根据枚举定义获取接口名称
 第二行获取接口的.class文件,
 第三行调用你的通用方法,参数1:方法名称,参数2:参数实体.class(如果为get请求那就STRING,INT),
 第四行 要知道getMethod方法只能获取public级别的方法,所以第四行为了忽略所以进行暴力获取,你也可以调用其他方法API获取私有的方法,
 第五行正式调用,第一个参数为new的实现类,第二个参数为入参参数
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值