变量 / 数据类型 / 编程语言 · 2023年 10月 10日 0

反射: 获取变量类型

72 次浏览

更高级的编程语言,提供反射、解释机制,获取对象类型非常方便,因为运行时保存有对象的全部信息,也包括类型,而对于编译型语言而言,变量类型要靠编译期或构造/依赖类型某个存储类型的结构。

不同语言的反射

  • C 语言不支持反射。
  • ObjC 运行时库支持反射。
  • C++ typeid编译器编译时可以确定某些无多态的变量对象类型,无需额外结构辅助。对于有多态行为的类对象,编译器利用vtable内指向对应类型的type_info, 运行期可通过vtable获取真实的类型。
  • Kotlin 用is或!is, as或as? 判断变量类型或强制转换成特定类型。