据我所知和理解,
反射是在运行时创建/修改源代码的能力。
来自维基百科:
- 在运行时发现和修改源代码结构(例如代码块、类、方法、协议等)作为第一类对象。
- 将与类或函数的符号名称匹配的字符串转换为对该类或函数的引用或调用。
- 在运行时评估一个字符串,就好像它是一个源代码语句。
为语言的字节码创建一个新的解释器,为编程结构赋予新的
意义或目的。
动态语言是我们可以在运行时评估(直接从字符串评估)的语言。
来自维基百科:“通过添加新代码、扩展对象和定义或修改类型系统来扩展程序”
好的,现在,我的问题是:静态语言(没有 eval 能力)如何进行反射(例如 Java)?(新的源代码不评估?:/)
提前致谢!