总结:

目前用到反射的主要有两个方法

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 反射机制相关推荐

  1. Flex前端与Java服务端交互,反射机制挑大旗

    Flex作为RIA的一支,提供了非常丰富多彩的客户端实现,并且编写起来非常灵活.Java提供了强大的功能实现,与Flex结合也让Java开发穿上了华丽外衣 . BlazeDS 是LCDS的一个衍生版 ...

  2. java 反射教程_Java基础教程——反射机制

    Java反射机制 Java反射机制是Java语言的一个重要特性,使得Java语言具备"动态性": 在运行时获取任意一个对象所属的类的相关信息; 在运行时构造任意一个类的对象: 在运 ...

  3. java 反射的弊端_java反射机制的一些学习心得小结

    概述 之前在了解Spring的类加载机制的时候,了解了java的反射机制.但是,我对反射理解一直不深.也一直有点疑惑:Spring为什么利用反射创建对象?直接new对象和依靠反射创建对象有什么区别?什 ...

  4. 关于Java的反射机制,你需要理解这些..

    转载请标明出处: http://blog.csdn.net/forezp/article/details/53730429 本文出自方志朋的博客 反射机制是在运行状态中,对于任意一个类,都能够知道这个 ...

  5. IBM技术论坛:使用 Cobertura 和反射机制提高单元测试中的代码覆盖率

    引言 单元测试是软件开发过程中重要的质量保证环节.单元测试可以减少代码中潜在的错误,使缺陷更早地被发现,从而降低了软件的维护成本.软件代码的质量由单元测试来保证,而单元测试自身的质量与效率问题也不容忽 ...

  6. 哪些类用来实现java反射机制_JAVA反射机制

    运行时类型识别(Run-time Type Identification, RTTI)主要有两种方式,一种是我们在编译时和运行时已经知道了所有的类型,另外一种是功能强大的"反射"机 ...

  7. Java 为什么不new 而用反射,为什么用Java反射机制

    在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意方法和属性:这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制.通俗的讲就是反射可 ...

  8. python getattr_Python之反射机制「详解」

    前言 def f1(): print('f1')def f2(): print('f2')def f3(): print('f3')def f4(): print('f4')a = 1 import ...

  9. 【韩顺平】Java反射机制笔记

    文章目录 1.前言 2.一个需求引出反射 3.反射机制 3.1 Java Reflection 3.2 反射机制原理图 3.3 反射机制可以完成的功能 3.4 反射相关的主要类 3.5 反射优点和缺点 ...

最新文章

  1. 编程范式,程序员的编程世界观
  2. laravel 的 表单请求
  3. 递归,记忆化搜索,(棋盘分割)
  4. 目标检测 nms非极大抑制算法
  5. Java虚拟机学习(5):内存调优
  6. 递归求二叉树的深度_优雅地用堆栈替代递归实现二叉树的深度优先搜索
  7. linux unshare 命令,详解Linux Namespace之User
  8. python time timeit_python运行时间计算之timeit
  9. qt 实现拖动矩形角度_Qt 绘图之图形视图框架
  10. zlog日志使用说明
  11. 手机游戏开发平台有哪些
  12. 微信部分功能故障 已全部恢复
  13. NC-Verilog仿真
  14. 给文档添加签名,介绍用iPhone的实例,安卓手机类似
  15. 遇见狂神说HTML笔记1
  16. HTTP断点续传以及缓存问题
  17. UG CAM 开发获取工序导航器当前选择的操作、程序组、几何体、刀具方法,获得名字并修改名字
  18. 【网络聊天室】——基于socket编程的TCP/UDP网络聊天服务器
  19. 电脑开机在一会儿未使用卡死解决方法
  20. 【PV操作】买面包的叫号算法(存疑)

热门文章

  1. python中的module
  2. 在 Node.js 中用子进程操作标准输入/输出
  3. 全球物联网产业规模不断扩大 中国市场前景分析
  4. 【TCP/IP】IP路由选择
  5. centos 扫毒软件clamAV安装
  6. STC12C5A60S2 内部AD+1602显示
  7. saiku执行过程代码跟踪
  8. 在eclipse中通过基于spring data的easyrest风格的maven项目操纵cassandra和lucene
  9. 如何终止正在在发送的ajax请求
  10. mysql在线上建索引,mysql 5.6在线DDL建索引测试