【教程】【FLEX】#004 反射机制
总结:
目前用到反射的主要有两个方法
1. getDefinitionByName //根据类名,返回对象(反射实例化对象)
2. describeType //根据对象,返回XML格式的属性,方法等信息(反射得到对象的属性和方法)
3. 这两个混用,根据一个类名,获取它的所有属性、方法(不包括 private,protected, [Bindabel] 修饰的 || static 的属性,直接传入类名,就可以获取到)
声明:
由于刚接触Flex不是很久,所以对Flex不是很了解。反射这一块,了解的不是很深。只够 基本的应用。
如果有什么地方有问题,请指出来。 谢谢。
Q:什么事件,事件的作用?
引用:http://www.cnblogs.com/cj723/archive/2007/03/22/683951.html (C#的反射)
(PS:这个博主,是参照 《大话设计模式》里面的,不过博主把代码也粘上去了,方便看源代码。)
题外话:
说到大话系类的书籍,我还是很喜欢的。看这种书籍,就像看故事一样,不会累。而且一个个故事又何尝不是一个个实际中使用例子呢?
所以,看的轻松,又可学习到如何运用,在上面场景应用,有什么好处?
何乐而不为呢?
不过学习还是需要耐心的。再好的书籍也是只是一个引导,需要自己的努力。
-------zhongxia
公司有一个项目,需要根据控件的类名(eg: mx.controls.Button,这些类名是存放在数据库中)来生成相对应的控件。
实现思路(简单的思路,勿吐槽):
1、获取控件的类名
2、反射得到相对应的类
3、生成相对应的控件,添加到面板中
代码例子(片段): 根据类名(字符串),实例化一个类
var controlType:String = datas[0].Appoint; //获取控件类名,data是数据库读出来的数据var classRefrence:Class = getDefinitionByName(controlType) as Class; //反射成对应的类var control:UIComponent = new classRefrence() as UIComponent; //实例化控件this.addChild(control); //添加控件到面板中(Flex3.0的方法,Flex4.0需要用 addElement(control); )
反射当然不是只有上面这个小伎俩啦,反射还可以做到:1、反射出这个类的所有方法 (公有的) 2、反射出方法,并执行它。 etc....
一个常用的反射类。(想了解源代码,请下载该文件,研究研究。简单的反射机制就有了点了解。)
地址:【Flex资源】#500 常用反射类
里面提供的方法:
1、传入一个对象,获取类名
2、传入类名和属性名,获取属性值
3、传入类名,方法名,和参数,然后执行这个方法。
4、获取一个对象的所有方法(公有的)。
5、获取一个对象的所有属性(公有的,[Bindabel]也获取不到)。
上面直接放了一个代码文件,看代码还需要下载下来,比较麻烦。所以这边粘一个获取所有公有属性的方法出来。
方便阅读。
采用的是describeType的方法。
/*** 传入一个对象,获取这个对象里面的所有属性,并返回JSON格式的字符串* @time 2014年12月27日 21:29:45* */public function getJsonFromObject(obj:Object):String{if(obj == null){ return "";}var json:String ="{";var properties:XMLList = describeType(obj).variable;for each(var property:XML in properties){ //@ 是出现在flex解析xml时用到,非XML无法使用,会报错// @指属性,不加@的是指其子节点var propertyName:String = property.@name;json += "\"" + propertyName + "\":\"" + obj[propertyName] + "\","; }json = json.substr(0,json.length-1);json += "}";return json;}
题外知识:
Flex 中 @的含义:注意,只有解析XML的时候才可以用(尝试解析过Object对象,报错)
转载于:https://www.cnblogs.com/zhongxia/p/4190013.html
【教程】【FLEX】#004 反射机制相关推荐
- Flex前端与Java服务端交互,反射机制挑大旗
Flex作为RIA的一支,提供了非常丰富多彩的客户端实现,并且编写起来非常灵活.Java提供了强大的功能实现,与Flex结合也让Java开发穿上了华丽外衣 . BlazeDS 是LCDS的一个衍生版 ...
- java 反射教程_Java基础教程——反射机制
Java反射机制 Java反射机制是Java语言的一个重要特性,使得Java语言具备"动态性": 在运行时获取任意一个对象所属的类的相关信息; 在运行时构造任意一个类的对象: 在运 ...
- java 反射的弊端_java反射机制的一些学习心得小结
概述 之前在了解Spring的类加载机制的时候,了解了java的反射机制.但是,我对反射理解一直不深.也一直有点疑惑:Spring为什么利用反射创建对象?直接new对象和依靠反射创建对象有什么区别?什 ...
- 关于Java的反射机制,你需要理解这些..
转载请标明出处: http://blog.csdn.net/forezp/article/details/53730429 本文出自方志朋的博客 反射机制是在运行状态中,对于任意一个类,都能够知道这个 ...
- IBM技术论坛:使用 Cobertura 和反射机制提高单元测试中的代码覆盖率
引言 单元测试是软件开发过程中重要的质量保证环节.单元测试可以减少代码中潜在的错误,使缺陷更早地被发现,从而降低了软件的维护成本.软件代码的质量由单元测试来保证,而单元测试自身的质量与效率问题也不容忽 ...
- 哪些类用来实现java反射机制_JAVA反射机制
运行时类型识别(Run-time Type Identification, RTTI)主要有两种方式,一种是我们在编译时和运行时已经知道了所有的类型,另外一种是功能强大的"反射"机 ...
- Java 为什么不new 而用反射,为什么用Java反射机制
在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意方法和属性:这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制.通俗的讲就是反射可 ...
- python getattr_Python之反射机制「详解」
前言 def f1(): print('f1')def f2(): print('f2')def f3(): print('f3')def f4(): print('f4')a = 1 import ...
- 【韩顺平】Java反射机制笔记
文章目录 1.前言 2.一个需求引出反射 3.反射机制 3.1 Java Reflection 3.2 反射机制原理图 3.3 反射机制可以完成的功能 3.4 反射相关的主要类 3.5 反射优点和缺点 ...
最新文章
- 编程范式,程序员的编程世界观
- laravel 的 表单请求
- 递归,记忆化搜索,(棋盘分割)
- 目标检测 nms非极大抑制算法
- Java虚拟机学习(5):内存调优
- 递归求二叉树的深度_优雅地用堆栈替代递归实现二叉树的深度优先搜索
- linux unshare 命令,详解Linux Namespace之User
- python time timeit_python运行时间计算之timeit
- qt 实现拖动矩形角度_Qt 绘图之图形视图框架
- zlog日志使用说明
- 手机游戏开发平台有哪些
- 微信部分功能故障 已全部恢复
- NC-Verilog仿真
- 给文档添加签名,介绍用iPhone的实例,安卓手机类似
- 遇见狂神说HTML笔记1
- HTTP断点续传以及缓存问题
- UG CAM 开发获取工序导航器当前选择的操作、程序组、几何体、刀具方法,获得名字并修改名字
- 【网络聊天室】——基于socket编程的TCP/UDP网络聊天服务器
- 电脑开机在一会儿未使用卡死解决方法
- 【PV操作】买面包的叫号算法(存疑)