反射在微信公众平台开发中的应用

1、开发背景

在微信公众号开发的时候,我们都会去解析微信消息,然后根据不同的消息类型做对应的操作。下面是一段微信的消息体:

这里的MsgType有8种,分别是text、event。这么多中消息类型,怎么办呢?if...else,switch?都可以处理,看起来It's too simple。


那么问题来了,还有事件消息event。这个消息有关注,取关,上传地理位置以及自定义菜单等。看消息体:

事件消息都是event类型,具体的事件(点击了不同的按钮)对应一个Event,在自定义菜单的时候,那这个Event就有N种了。如果都用分支结构去写,那就有点尴尬了。所以呢,为了解决这种尴尬,下面引入一个概念——反射。


2、反射

反射是什么呢?说起这个概念,笔者表示一脸懵逼。我不记得,下面请看一几个例子。

2.1通过一个对象获得完整的包名和类名

2.2实例化Class类对象


注意: 还有很多示例,请移驾到baidu.com


在你百度了一下你就会发现,我的两个简单的例子也是copy过来的。不过还是要总结一下反射有什么用:

在运行时判断任意一个对象所属的类;在运行时构造任意一个类的对象;在运行时判断任意一个类所具有的成员变量和方法;在运行时调用任意一个对象的方法;生成动态代理。


看完了上面这一段解释,是不是一脸懵逼,没关系,接着看,从例子中理解反射的作用。

3、反射在微信公众平台开发中的应用


接入成功了之后了,下面就到了重点了,直接上代码:

这里的处理就用到了反射了,就是下面这两行代码:

Methodmethod = wechatEventCenter.getClass().getMethod(msgType);

wechatMsg = (BaseWechatMsg)method.invoke(wechatEventCenter);

这样整个过程就完成了,在处理事件消息的时候也是一样的根据事件的EventKey去调用对应的方法就OK了,这里就不赘述了。


4、总结

在运行时判断任意一个对象所属的类;在运行时构造任意一个类的对象;在运行时判断任意一个类所具有的成员变量和方法;在运行时调用任意一个对象的方法;生成动态代理。


仅供参考,不足之处还请见谅,欢迎指正!

文末福利,关注公众号“java工会”后台回复:

回复【视频】:100G+免费学习视频

回复【书籍真多】:1000+册免费编程电子书

回复【加群】:java技术学习交流群,阿里大神和你聊技术

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,506评论 19 139
  • 1.ios高性能编程 (1).内层 最小的内层平均值和峰值(2).耗电量 高效的算法和数据结构(3).初始化时...
    欧辰_OSR阅读 30,194评论 8 265
  • 傍市井而脱凡心,立尘土而观宇宙。持方寸,窥无边无上法,三叩首,问如何观自在。梵音绕塔,菩提婆娑,行意幻化,唯有无常...
    bluebox阅读 554评论 0 2
  • 宝贝: 昨天妈妈回到家看到你满脸沮丧的表情时就知道你这次期末考试又滑铁卢了!你告诉妈妈你已经伤心了一个下午了...
    然姐欣妹阅读 458评论 3 1
  • 2017年的4月,Ellen在青海的高原山村里和全校孩子们放风筝,记得那个下午的蓝天,记得孩子们明亮的眼睛,记得丁...
    9444e0643fbd阅读 70评论 0 0

友情链接更多精彩内容