编程语言中的反射机制

     今天在开发的过程中需要把两个类似产品的代码进行合并,减少代码的维护量,同时可以减少物料的维护成本。
     两个产品只是一个通信用结构体内的元素有些区别,结构体相同元素的便宜地址发生了变化,同时增加了一些元素。
     在设计之初应该考虑到升级的问题,应该做到通信地址兼容,不改变原来的通信地址,但是由于前人已设计好了,且工程庞大,不易再修改。
     在此基础上想到了,让程序动态的去动态的确定使用哪个结构体去使用,正好,这个结构体一个固定的便宜量中有一个产品ID能够用来区分是哪一种产品。这个恰好是反射机制,在此记录学习一下反射机制

反射机制

     计算机中的反射,是在运行的时候来自我检查,并对内部成员进行操作。就是说这个变量的类型可以动态的改变,在运行的时候确定它的作用,很多高级编程语言中有这些机制:Python,lua,c#,java都自带有这个机制。下面以lua作为例子

local AllTypes = {
    Type1 = 1,
    Type2 = 2,
    Type3 = 3,
}
local typeClsHash = {}
typeClsHash[AllTypes.Type1] = Cls1
typeClsHash[AllTypes.Type2] = Cls2
typeClsHash[AllTypes.Type3] = Cls3

local theType = AllTypes.Type2

local cls = typeClsHash[theType]
local instance = cls:new()
instance:doSth()

因为没有指定变量的类型&#x

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值