- 浏览: 7332463 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (1546)
- 企业中间件 (236)
- 企业应用面临的问题 (236)
- 小布Oracle学习笔记汇总 (36)
- Spring 开发应用 (54)
- IBatis开发应用 (16)
- Oracle基础学习 (23)
- struts2.0 (41)
- JVM&ClassLoader&GC (16)
- JQuery的开发应用 (17)
- WebService的开发应用 (21)
- Java&Socket (44)
- 开源组件的应用 (254)
- 常用Javascript的开发应用 (28)
- J2EE开发技术指南 (163)
- EJB3开发应用 (11)
- GIS&Mobile&MAP (36)
- SWT-GEF-RCP (52)
- 算法&数据结构 (6)
- Apache开源组件研究 (62)
- Hibernate 学习应用 (57)
- java并发编程 (59)
- MySQL&Mongodb&MS/SQL (15)
- Oracle数据库实验室 (55)
- 搜索引擎的开发应用 (34)
- 软件工程师笔试经典 (14)
- 其他杂项 (10)
- AndroidPn& MQTT&C2DM&推技术 (29)
- ActiveMQ学习和研究 (38)
- Google技术应用开发和API分析 (11)
- flex的学习总结 (59)
- 项目中一点总结 (20)
- java疑惑 java面向对象编程 (28)
- Android 开发学习 (133)
- linux和UNIX的总结 (37)
- Titanium学习总结 (20)
- JQueryMobile学习总结 (34)
- Phonegap学习总结 (32)
- HTML5学习总结 (41)
- JeeCMS研究和理解分析 (9)
最新评论
-
lgh1992314:
[u][i][b][flash=200,200][url][i ...
看看mybatis 源代码 -
尼古拉斯.fwp:
图片根本就不出来好吧。。。。。。
Android文件图片上传的详细讲解(一)HTTP multipart/form-data 上传报文格式实现手机端上传 -
ln94223:
第一个应该用排它网关吧 怎么是并行网关, 并行网关是所有exe ...
工作流Activiti的学习总结(八)Activiti自动执行的应用 -
ZY199266:
获取不到任何消息信息,请问这是什么原因呢?
ActiveMQ 通过JMX监控Connection,Queue,Topic的信息 -
xiaoyao霄:
DestinationSourceMonitor 报错 应该导 ...
ActiveMQ 通过JMX监控Connection,Queue,Topic的信息
學習Java的人,知道java中反射的强大,使用Flex是學習他的反射机制,发现有开源组件As2Commons实现flex的反射机制.
本人写的实例demo如下:
package commons
{
import org.as3commons.logging.ILogger;
import org.as3commons.logging.LoggerFactory;
import org.as3commons.reflect.ClassUtils;
import org.as3commons.reflect.Constant;
import org.as3commons.reflect.Constructor;
import org.as3commons.reflect.Field;
import org.as3commons.reflect.MetadataUtils;
import org.as3commons.reflect.Method;
import org.as3commons.reflect.Parameter;
import org.as3commons.reflect.Type;
import org.as3commons.reflect.Variable;
import mx.utils.ObjectProxy;
/**
* AS3commons 的学习的应用
*
*/
public class CommonRelection
{
//用于记录日志信息
var logger:ILogger=LoggerFactory.getClassLogger(CommonRelection);
public function CommonRelection()
{
}
/**
*
* 獲取类的信息
*/
public function getClassInfo(clazz:Class):Type
{
//獲取类的元数据對象
var type:Type=Type.forClass(clazz);
//獲取非静态常量
var constArrays:Array=type.constants;
//
var varArray:Array=type.staticVariables;
//獲取类的全名称
var className:String=type.fullName;
trace("classname= "+className);
var constructor:Constructor =type.constructor;
var params:Array=constructor.parameters;
var ps:String="";
for(var i:int=0;i<params.length;i++)
{
var p:Parameter=params[i] as Parameter;
ps+=p.type.name+" index ="+p.index;
}
trace(" name ="+constructor.declaringType.name+"paramers="+ps);
//獲取绑定的属性
var bindable:Array=type.getMetaData("Bindable");
var m:Method=type.getMethod("setEmp");
//獲取静态常量
var constArray:Array=type.staticConstants;
for(var i=0;i<constArray.length;i++)
{
var aconst:Constant=constArray[i] as Constant;
trace("name ="+aconst.name+" DeclareType="+aconst.declaringType.fullName);
}
return null;
}
/**
*
* 根据类名查找类
* @params clazzName 例如:
* com.company.domain.Person
* com.company.domain::Person
*/
public function getClass(clazzName:String):Type
{
//獲取类的元数据對象 相等与Java 中Class
var type:Type=Type.forName(clazzName);
return type;
}
/**
*
* 根据类名查找类的所用的属性
*
*/
public function getFields(o:Object):void
{
var xml:XML=MetadataUtils.getFromObject(o);
trace("xml" +xml);
//獲取對象的類名信息
var clazz:Class=ClassUtils.forInstance(o);
//得到反射类的對象
var type:Type=Type.forInstance(o);
//获取类中属性和变量
var fields:Array=type.fields;
for(var i:int=0;i<fields.length;i++)
{
var field:Field=fields[i] as Field;
if(field is Variable)
{
trace("Name ="+ field.name+" "+" Value="+field.getValue(o));
}
}
}
/**
*
* 根据类名查找类的所用的属性
*/
public function existsField(o:Object,field:String):Object
{
//獲取對象的類名信息
var clazz:Class=ClassUtils.forInstance(o);
//得到反射类的對象
var type:Type=Type.forInstance(o);
var vars:Array=type.variables;
//检测类中是否有某个属性
if(clazz.hasOwnProperty(field))
{
var sfield:Field=type.getField(field);
trace("Name ="+ sfield.name+" "+" Value="+sfield.getValue(o));
}else{
logger.info(" can't the {0} in the class of {1}",field,type.name);
}
return null;
}
/**
*
* 根据类名查找类的方法
* @params clazzName 例如:
* com.company.domain.Person
* com.company.domain::Person
*/
public function getMethods(clazz:Class):Type
{
//得到反射类的對象
var type:Type=Type.forClass(clazz);
//var type:Type=Type.forClass(clazz);
//获取类中属性
var methods:Array=type.methods;
for(var i:int=0;i<methods.length;i++)
{
var method:Method=methods[i] as Method;
trace("Name ="+ method.name+" "+"return type="+method.returnType.name);
}
return null;
}
/**
* 动态调用类中方法
*/
public function invokeMethod(o:Object,method:String,args:Array=null):*
{
//獲取类的元数据對象
var type:Type=Type.forInstance(o);
var data:*;
//獲取类的方法
var m:Method=type.getMethod(method);
if(m!=null)
{
data=m.invoke(o,args);
}
return data;
}
}
}
调用的test类如下:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" initialize="init()" layout="absolute" xmlns:view="commons.*">
<mx:Script>
<![CDATA[
import model.Employee;
import commons.CommonRelection;
public function init():void
{
var a:CommonRelection=new CommonRelection();
var emp:Employee=new Employee();
a.existsField(emp,"empName");
a.getClass("model.Employee");
a.getClassInfo(Employee);
a.getFields(emp);
a.getMethods(Employee);
a.invokeMethod(emp,"setEmpName",["xiaobai"]);
trace(emp.getEmpName());
//com.company.domain.Person
//com.company.domain::Person
}
]]>
</mx:Script>
</mx:Application>
评论
As2Commons网上开源的组件,必须到官网上下载的。
发表评论
-
flex的国家化的应用
2009-09-23 08:59 2091在项目中需要使用发送短信模板的功能的,根据主题不同,模板不同, ... -
flex的沙箱问题
2009-09-14 17:14 5449在flex与google的地图整合中发现,点击了goog ... -
Flex 常用技巧
2009-09-04 13:00 2574flex是一种异步请求的技术,如果要实现同步必须在传递函 ... -
Flex 開發Google地圖
2009-08-24 13:16 24431 .获取googe的key 2.下载google的fle ... -
查询之order by,group by和having的使用
2009-08-08 15:48 4719在项目中查询常驻酒店的中住的次数最多的前10个酒店: 代码如 ... -
objectProxy的监控对象应用
2009-08-08 13:46 2677在项目中查询根据一个字段发生实现需要特殊的功能,作出相应的动作 ... -
Flex 依赖注入
2009-08-08 13:41 2093了解依赖注入 众所周 ... -
Flex 与外部的数据通信(HTTPService,URLLoader和URLRequest)
2009-08-08 13:36 7432ActionScript 3.0中提供的数据加载请求类主要是H ... -
flex 数据绑定
2009-08-08 13:31 24029.2.1 函数和类级别的绑定 [Bindable]标签打使 ... -
Flex中Entity对象与Display对象之间的数据双向动态绑定
2009-08-08 13:27 2448flex项目中对象的和组 ... -
学习ActionScript 3.0的新特点
2009-08-06 13:05 2006ActionScript3.0 是一种类型 ... -
理解 Flex itemRenderer - 第 1 部分: 内联渲染器
2009-08-05 16:37 3134Flex 提供许多控制, 它们可以按不同方式显示大量数据。Li ... -
flex 中类似Google的提示下拉菜单实现
2009-08-01 16:28 5413项目中使用类似Gooogle输入提示菜单的实现如下 ... -
针对Flex中组件的扩展的应用开发
2009-08-01 16:04 2864在项目中使用一个自定义的CheckboxGroup组件继承自C ... -
Flex类似Google搜索提示的两种做法思路
2009-08-01 15:52 2678做了个简单的搜索提示 ... -
Flex中直接获取某个组件的对象
2009-08-01 15:47 2451Flex中直接获取某个组件的对象方案1: 遍历这些butto ... -
flex 查看类的各种数据的权限
2009-08-01 15:18 1868查看类的一些属性的信息:可读,可写,可读可写。 ... -
flex中getDefinitionByName 函数的使用
2009-08-01 12:40 6739在项目中自定义一个CheckboxGroup,这个控件里面 ... -
Flex 学习中数据类型必须注意的几点
2009-08-01 12:36 2249在字符串转换为int类型必须使用 最好如下: var a:i ... -
flex BindUtils的扩展的样式表绑定工具类StyleBindingUtils
2009-07-30 13:06 2215项目中使用的样式表绑定类如下: package uti ...
相关推荐
本文将详细介绍如何使用As2Commons来实现Flex中的反射机制。 #### 二、As2Commons简介 As2Commons是一个基于ActionScript 3.0的开源库,提供了丰富的工具和实用程序,其中包括了对反射的支持。它为开发者提供了一...
在学习的资源中,提到了Creative Commons Attribution Non-Commercial 3.0 License,这是一种非商业用途的共享许可证,用户可以复制和分发指南,但必须遵守指定的条款。Adobe和其他公司,比如Microsoft、Apple和Sun ...
Flex代码检查PMD是一种针对ActionScript 3(AS3)代码的质量分析工具,与Java中的PMD类似。PMD( Potion Memory Debugger)最初是为Java语言设计的源代码分析器,用于检测潜在的编程错误、代码异味(code smell)...
下面将详细介绍As3commonsLog库的使用方法、主要特性以及如何将其集成到Flex项目中。 **As3commonsLog的核心特性:** 1. **多级别的日志记录**:As3commonsLog支持多种日志级别,包括`DEBUG`、`INFO`、`WARN`、`...
Flex PMD 是一款针对Flex开发的代码质量检查工具,它主要的作用是对Flex项目中的ActionScript 3(AS3)代码进行静态分析,发现潜在的编程问题、代码异味和不规范的编码习惯。PMD(Probable Bugs, Maintainability, ...
同时,还列出了其他一些库的下载链接,如as3corelib、json-lib、ezmorph等,这些都是在Flex和Java开发中常用的库,它们分别提供了AS3核心库支持、JSON处理功能和对象转换工具。 as3corelib是一个ActionScript 3的...
可以考虑使用第三方日志库,如AS3Commons的Logging框架,它提供了更完善的日志管理和配置能力。 总的来说,有效的日志记录能极大地提升Flex Air应用的可维护性和稳定性。通过自定义日志工具类,开发者可以定制适合...
总之,这个压缩包是一个完整的开发环境,适合那些希望在ActionScript 3项目中使用Spring框架和Cairngorm架构的开发者。通过这些库的集成,可以实现更强大的组件管理和测试,提高ActionScript应用程序的开发效率和...
- Flex项目通常由.mxml和.as文件组成,mxml用于定义用户界面,as用于编写业务逻辑。 - Flex使用Flash Player或Adobe AIR运行,支持跨平台运行。 2. Java基础知识: - Java是一种多平台的、面向对象的编程语言,...
然后,打开 Flex Builder 3,创建一个新的 Flex Project,命名为 EmployeeMgmt-Flex: 图 3. 新建 Flex 工程 - 第一步 Flex Project 需要指定 Server 端的配置文件地址: 图 4. 新建 Flex 工程 - 第二步 ...
然后,打开 Flex Builder 3,创建一个新的 Flex Project,命名为 EmployeeMgmt-Flex: 图 3. 新建 Flex 工程 - 第一步 Flex Project 需要指定 Server 端的配置文件地址: 图 4. 新建 Flex 工程 - 第二步 ...
- **Event与Notification**:事件是AS3的标准机制,而通知则是PureMVC特有的机制,用于更灵活地传递消息。 - **定义Notification**:通过定义特定的通知名称和类型,来标准化通信方式。 - **处理Notification**:...
as3-commons-lang: : as3-corelib: 此外,您需要将 flex 移动组件包包含到 Flex 构建路径中: ${FLEXSDK}/frameworks/libs/mobile/mobilecomponents.swc ${FLEXSDK}/frameworks/themes/Mobile/mobile.swc
3. AirExcel.rar,as3xls.rar:air下Excel开发包 4. csvlib-1.4.1.rar:生成cvs格式数据 5. jxls-reader-0.9.6.jar,commons-jexl-1.1.jar,jxls-core-0.9.6.jar:jxls操作Excel的开发包,与poi共同构成当前java下...
3. 关于文档中的技术术语: - ActionScript是Adobe Flash平台的主要编程语言,用于控制电影剪辑,处理用户输入和交互,以及访问本地系统资源。 - ColdFusion是Adobe推出的一个用于快速开发基于Web的应用程序的...
你可以从官方网站或其他第三方源下载插件,如AS3 Commons、FlashLibs等,它们提供了丰富的库和工具,以满足不同开发需求。安装插件通常只需将插件文件复制到FlashDevelop的“Plugins”目录下,并在重启后启用。 总...
Creative Commons BY-ND-NC Foreword: Beta 0.16 Preface 1. How to Use this Book 2. Your Feedback 3. Font Conventions 4. Maven Writing Conventions 5. Acknowledgements 1. 介绍 Apache Maven 1.1....
Flex使用ActionScript 3编程语言,支持MXML标记语言,允许开发者用面向对象的方式构建UI组件。 2. **XML数据驱动**:CaseSim的核心特性是利用XML文件来存储和管理模拟案例的界面和内容。XML是一种结构化数据格式,...