多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
有时候直接访问方法和变量不是一个可行的解决方案;你可能需要更多灵活的访问私有成员或者不知道哪个字段需要被访问直到它发生之前的几分钟。要解决这个极端情况你可以依赖反射API,在16章进行介绍。 在博客记录的例子中,不太难发现createdOn属性的实现在一个使用数据库存储和检索网站内容的CMS应用中的上下文有点没有意义。创建记录到数据库表通过读取属性和变量是很容易的。但是当对象必须从数据库中加载时会发生什么?它如何分配只读的createdOn属性? Reflect 和Type 类可以提供一个方案 ,如下所示: ~~~ var entry : Article = Type.createEmptyInstance(Type.resolveClass(“Article”)); Reflect.setField(entry, “createdOn”, Date.fromString(“2007-04-10”)); ~~~ 类使用Type.createEmptyInstance()进行实例化,构造一个对象而不用调用构造器(在这个情况下和使用new关键字实例化对象没有太大不同,但是有些情况会有很大差异)。Reflect.setField() 方法之后被用于设置只读属性 createdOn 。其余的变量可以被正常设置。