我们在不同的场合用不同的方式阐述过,“易语言.飞扬”具有非常完善的类型反射机制。
看一下反射类库(反射.ncl)提供了哪些功能,就大致可以了解“易语言.飞扬”的类型反射机制。
强调一点:是因为有了完善的类型反射机制,才会产生反射类库;而不是因为反射类库的存在,才使“易语言.飞扬”有了完善的类型反射机制。反射类库是结果之一,是表现形式之一。
反射类库主要提供两大方面的功能:1、获取指定类库或类型的详细定义信息;2、获取运行时对象信息。
借助于第1点,可以依据编译后的类库(*.ecl, *.ncl)生成类似于JavaDoc的API文档,也就是说,源代码中的几乎所有定义信息,在编译之后,依然可以反射出来。
*.ecl大致相当于Java中的*.jar,*.ncl大致相当于Java中的本地库(请参考JNI)。JavaDoc是从Java源代码中提取API文档(http://java.sun.com/javase/6/docs/api/),而EFDoc是从编译后的类库中提取API文档(http://www.dotef.cn/docs/api/),这是两者的不同之处。
不能反射得到“易语言.飞扬”源代码,因为编译之后,生成的是机器指令,不是字节码。
通过第2点,我们可以在程序运行时,创建对象,调用对象的指定方法,读取或修改对象的属性值和成员值,等等。
<