反射其实很简单,就是一句话的事情,看了网上的各种文章,都是讲了各种使用方法,基本都没提及为啥要有反馈?仅仅做到了知其然,不知其所以然。

我们都知道整个软件工程其实就是0和1.

数据的存储其实是存储的0和1,计算的过程中就是0和1的各种运算。随之衍生的是存储用的数据结构,运算使用的算法。

一个语言是否支持反射需要看这个语言是否有一个父类(如java的object,go的interface)。这门语言的数据结构里面存储了类型信息和数据,也就是他自己约定好的格式。

举个例子 ipv4 数据包 请输入图片描述

也就是说,当一个数据过来的时候,你就知道他是v4还是v6,知道他的长度,知道他的协议,这些都是约定好的数据。同理各语言支持的反射也是如此,当一个数据过来,他自己本身已经自带解释了,他是什么类,他有啥方法,有啥数据,只要程序读出来就好了。

以上,反射就是如此简单。