- 浏览: 7258956 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (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 2060在项目中需要使用发送短信模板的功能的,根据主题不同,模板不同, ... -
flex的沙箱问题
2009-09-14 17:14 5411在flex与google的地图整合中发现,点击了goog ... -
Flex 常用技巧
2009-09-04 13:00 2533flex是一种异步请求的技术,如果要实现同步必须在传递函 ... -
Flex 開發Google地圖
2009-08-24 13:16 24071 .获取googe的key 2.下载google的fle ... -
查询之order by,group by和having的使用
2009-08-08 15:48 4677在项目中查询常驻酒店的中住的次数最多的前10个酒店: 代码如 ... -
objectProxy的监控对象应用
2009-08-08 13:46 2640在项目中查询根据一个字段发生实现需要特殊的功能,作出相应的动作 ... -
Flex 依赖注入
2009-08-08 13:41 2041了解依赖注入 众所周 ... -
Flex 与外部的数据通信(HTTPService,URLLoader和URLRequest)
2009-08-08 13:36 7373ActionScript 3.0中提供的数据加载请求类主要是H ... -
flex 数据绑定
2009-08-08 13:31 23759.2.1 函数和类级别的绑定 [Bindable]标签打使 ... -
Flex中Entity对象与Display对象之间的数据双向动态绑定
2009-08-08 13:27 2397flex项目中对象的和组 ... -
学习ActionScript 3.0的新特点
2009-08-06 13:05 1953ActionScript3.0 是一种类型 ... -
理解 Flex itemRenderer - 第 1 部分: 内联渲染器
2009-08-05 16:37 3100Flex 提供许多控制, 它们可以按不同方式显示大量数据。Li ... -
flex 中类似Google的提示下拉菜单实现
2009-08-01 16:28 5375项目中使用类似Gooogle输入提示菜单的实现如下 ... -
针对Flex中组件的扩展的应用开发
2009-08-01 16:04 2827在项目中使用一个自定义的CheckboxGroup组件继承自C ... -
Flex类似Google搜索提示的两种做法思路
2009-08-01 15:52 2642做了个简单的搜索提示 ... -
Flex中直接获取某个组件的对象
2009-08-01 15:47 2410Flex中直接获取某个组件的对象方案1: 遍历这些butto ... -
flex 查看类的各种数据的权限
2009-08-01 15:18 1825查看类的一些属性的信息:可读,可写,可读可写。 ... -
flex中getDefinitionByName 函数的使用
2009-08-01 12:40 6676在项目中自定义一个CheckboxGroup,这个控件里面 ... -
Flex 学习中数据类型必须注意的几点
2009-08-01 12:36 2180在字符串转换为int类型必须使用 最好如下: var a:i ... -
flex BindUtils的扩展的样式表绑定工具类StyleBindingUtils
2009-07-30 13:06 2174项目中使用的样式表绑定类如下: package uti ...
相关推荐
as3-commons-concurrency as3-commons-lang as3-commons-logging as3-commons-reflect as3-commons-bytecode ...我主要是学习了flash日志,as3-commons-logging文件夹是关于日志的源码,纯AS 3。大家可以研究下。
Commons 实战学习Commons 实战学习
學習Java的人,知道java中反射的强大,使用Flex是學習他的反射机制,发现有开源组件As2Commons实现flex的反射机制.
赠送jar包:commons-lang3-3.9.jar; 赠送原API文档:commons-lang3-3.9-javadoc.jar; 赠送源代码:commons-lang3-3.9-sources.jar; 赠送Maven依赖信息文件:commons-lang3-3.9.pom; 包含翻译后的API文档:...
赠送jar包:commons-lang3-3.3.2.jar; 赠送原API文档:commons-lang3-3.3.2-javadoc.jar; 赠送源代码:commons-lang3-3.3.2-sources.jar; 赠送Maven依赖信息文件:commons-lang3-3.3.2.pom; 包含翻译后的API文档...
赠送jar包:commons-lang3-3.12.0.jar; 赠送原API文档:commons-lang3-3.12.0-javadoc.jar; 赠送源代码:commons-lang3-3.12.0-sources.jar; 赠送Maven依赖信息文件:commons-lang3-3.12.0.pom; 包含翻译后的API...
赠送jar包:commons-math3-3.6.1.jar; 赠送原API文档:commons-math3-3.6.1-javadoc.jar; 赠送源代码:commons-math3-3.6.1-sources.jar; 赠送Maven依赖信息文件:commons-math3-3.6.1.pom; 包含翻译后的API文档...
赠送jar包:commons-lang3-3.4.jar; 赠送原API文档:commons-lang3-3.4-javadoc.jar; 赠送源代码:commons-lang3-3.4-sources.jar; 赠送Maven依赖信息文件:commons-lang3-3.4.pom; 包含翻译后的API文档:...
赠送jar包:commons-math3-3.5.jar; 赠送原API文档:commons-math3-3.5-javadoc.jar; 赠送源代码:commons-math3-3.5-sources.jar; 赠送Maven依赖信息文件:commons-math3-3.5.pom; 包含翻译后的API文档:...
赠送jar包:commons-lang3-3.7.jar; 赠送原API文档:commons-lang3-3.7-javadoc.jar; 赠送源代码:commons-lang3-3.7-sources.jar; 赠送Maven依赖信息文件:commons-lang3-3.7.pom; 包含翻译后的API文档:...
赠送jar包:commons-math3-3.6.1.jar; 赠送原API文档:commons-math3-3.6.1-javadoc.jar; 赠送源代码:commons-math3-3.6.1-sources.jar; 赠送Maven依赖信息文件:commons-math3-3.6.1.pom; 包含翻译后的API文档...
赠送jar包:commons-math3-3.4.1.jar; 赠送原API文档:commons-math3-3.4.1-javadoc.jar; 赠送源代码:commons-math3-3.4.1-sources.jar; 赠送Maven依赖信息文件:commons-math3-3.4.1.pom; 包含翻译后的API文档...
赠送jar包:commons-math3-3.1.1.jar; 赠送原API文档:commons-math3-3.1.1-javadoc.jar; 赠送源代码:commons-math3-3.1.1-sources.jar; 赠送Maven依赖信息文件:commons-math3-3.1.1.pom; 包含翻译后的API文档...
赠送jar包:commons-lang3-3.5.jar; 赠送原API文档:commons-lang3-3.5-javadoc.jar; 赠送源代码:commons-lang3-3.5-sources.jar; 赠送Maven依赖信息文件:commons-lang3-3.5.pom; 包含翻译后的API文档:...
赠送jar包:commons-lang3-3.12.0.jar; 赠送原API文档:commons-lang3-3.12.0-javadoc.jar; 赠送源代码:commons-lang3-3.12.0-sources.jar; 赠送Maven依赖信息文件:commons-lang3-3.12.0.pom; 包含翻译后的API...
赠送jar包:commons-lang3-3.10.jar; 赠送原API文档:commons-lang3-3.10-javadoc.jar; 赠送源代码:commons-lang3-3.10-sources.jar; 赠送Maven依赖信息文件:commons-lang3-3.10.pom; 包含翻译后的API文档:...
开发工具 commons-lang3-3.4开发工具 commons-lang3-3.4开发工具 commons-lang3-3.4开发工具 commons-lang3-3.4开发工具 commons-lang3-3.4开发工具 commons-lang3-3.4开发工具 commons-lang3-3.4开发工具 commons-...
赠送jar包:commons-lang3-3.10.jar; 赠送原API文档:commons-lang3-3.10-javadoc.jar; 赠送源代码:commons-lang3-3.10-sources.jar; 赠送Maven依赖信息文件:commons-lang3-3.10.pom; 包含翻译后的API文档:...
赠送jar包:commons-math3-3.5.jar; 赠送原API文档:commons-math3-3.5-javadoc.jar; 赠送源代码:commons-math3-3.5-sources.jar; 赠送Maven依赖信息文件:commons-math3-3.5.pom; 包含翻译后的API文档:...
as3commons 旨在为 actionscript3 带来一些众所周知的 java.(lang|util).* 好东西,比如集合框架、字符串实用程序