0 0

【Flex】请教如何遍历类的所有属性和方法?10

请教Flex(AS3)中如何遍历类的所有属性和方法?

我想做一个类似Java中的BeanUtils.copyProperties

首先不知道是否有前人已经完成了类似的工具?如果有当然最好。

或者,如何取得一个Object中所有的可见(public)属性和getter/setter方法?

类似Java中的 Class.getMethods()

问题补充:
思路是这样的,请1楼的TX给出具体的函数名呀?我就是不知道如何得到所有的属性名?
问题补充:
老大,您这是Java吧!
我要的可是Flex的AS3!!
2008年12月04日 17:44

6个答案 按时间排序 按投票排序

0 0

类ObjectUtil在包mx.utils中

2008年12月19日 15:10
0 0

可以使用ObjectUtil类的getClassInfo函数
代码如下:

public static function copyProperty(objTo:Object, objFrom:Object):void{
   if(objTo == null || objFrom == null) return;

   var claInfo:Object = ObjectUtil.getClassInfo(objTo);			
   var props:Array = claInfo["properties"];
   for each(var q:QName in props){
	try{		
		if(objFrom.hasOwnProperty(q.localName)){
			objTo[q.localName] = objFrom[q.localName];
		}
	}catch(err:Error){}
   }		    	
}


通过ObjectUtil.getClassInfo(obj)获取某个对象的类信息,类的属性和方法都放在返回的对象的'properties'属性数组中,通过遍历该数组就可以遍历类的属性和方法,

2008年12月19日 15:07
0 0

这里需要的是flash.utils.describeType吧。详细请看官方文档

2008年12月10日 01:02
0 0

我已经给出了 查找类的所有 父类 子类 孙子类的方法了

你自己查下API 找可以获得属性的 修饰符的

2008年12月04日 21:39
0 0


public class Reflection {

	private List allGenericFields ;
    
	/**
	 * 查找出clazz的声明属性 以及 父类的声明属性
	 * @param clazz
	 * @return
	 */
	public List<Field> getFields(Class clazz){
		allGenericFields = new ArrayList();//防止重复调用该方法 出现脏值
		return _getFields(clazz);
	}
	
	/**
	 * 查找出clazz的声明属性 以及 父类的声明属性
	 * @param clazz
	 * @return
	 */
	
	private List<Field> _getFields(Class clazz) {
        
		// 如果clazz为空则直接返回
		if (clazz == null) return this.allGenericFields;
		
		Object parent = clazz.getGenericSuperclass();
		// 如果有父类并且父类不是Object 则递归调用
		if (parent != null && !((Class) parent).getName().equals("Object")) {
			this._getFields((Class) parent);
		}
		
		Field[] fields = clazz.getDeclaredFields();
		if (fields != null) {// 如果clazz存在声明的属性
			   for (int i = 0; i < fields.length; i++) 
				       this.allGenericFields.add(fields[i]);
		}
	    // 存在父类则递归调用
	    return this.allGenericFields;
	}
	
	/**
	 * 查找出clazz的 所有public方法 
	 * @param clazz
	 * @return List<Method>
	 * @throws NoSuchFieldException 
	 * @throws SecurityException 
	 * @throws NoSuchMethodException 
	 */
	public List<Method> getMethods(Class clazz) {
		// 如果clazz为空则直接返回
		if(clazz==null) return null;
		List listMethods = new ArrayList();
		Method[] methods = clazz.getMethods();
		for(int i = 0 ; i<methods.length ; i++){
			listMethods.add(methods[i]);
		}
		return listMethods;
	}
	
	
	
	/**
	 * 执行对象方法
	 * @param obj
	 * @param methodName
	 * @return
	 * @throws IllegalArgumentException
	 * @throws SecurityException
	 * @throws IllegalAccessException
	 * @throws InvocationTargetException
	 * @throws NoSuchMethodException
	 */
	public Object invokeMethod(Object obj,String methodName)
	         throws IllegalArgumentException, SecurityException, IllegalAccessException, InvocationTargetException, NoSuchMethodException{
	
		return obj.getClass().getMethod(methodName).invoke(obj);
	}

2008年12月04日 21:37
0 0

反射中可以获得 类的所有属性
通过获得的每个属性 有一个方法可以获得 该属性的修饰(public private ....)

通过这个条件来塞选就行了。。。。

get set 方法直接用 属性名! 前一个字母大写 拼接get and set;
自己做个判断看看该方法名存不存在就OK了

2008年12月04日 20:08

相关推荐

    Flex调用xml通过DataGrid遍历简单示例

    &lt;?xml version="1.0" encoding="utf-8"?&gt; creationComplete="service.send()" &gt; &lt;![CDATA[ import mx.controls.Alert;... import mx.rpc.events.FaultEvent;... import mx.collections.ArrayCollection;...

    flex array 搜索 遍历

    在给定的标题和描述中,`flex array`、`搜索`和`遍历`是关键概念,而提供的代码段展示了如何实现这个功能。 `flex array`指的是在Flex应用中使用的数组,它与标准的AS3数组类似,但提供了更丰富的功能,例如动态...

    FLex 物品分类游戏

    4. **动画效果**:Flex可以利用Tween类和Timeline类实现平滑的动画效果,比如物品移动、选中高亮等,增加游戏的趣味性。 5. **状态管理**:游戏可能有多个阶段或状态,Flex的State机制可以方便地切换UI布局和行为,...

    微信小程序开发中flex布局容器及元素之属性技术释疑.pdf

    而flex属性则是flex-grow, flex-shrink, flex-basis的简写形式,是控制元素伸缩和默认大小的常用属性。 justify-content属性用于定义Flex容器内的元素在主轴上的对齐方式,常见的值包括flex-start(起始位置对齐)...

    动画演示flex属性 - 可点击切换属性

    动画演示flex布局,包括flex父容器属性以及flex布局子元素属性 flex父容器属性有: 一. flex-direction 主轴方向 row:从左到右 row-reverse:从右到左 column:从上到下 column-reverse:从下到上 二. flex-wrap 子元素...

    Flex 遍历Object键和值的示例代码

    在Flex编程中,有时我们需要遍历一个Object对象的键(keys)和值(values),以进行数据处理或显示。在ActionScript 3.0中,这是通过循环结构来完成的。下面将详细介绍如何使用Flex遍历Object的键和值。 首先,让...

    flex属性演示.rar

    在移动Web开发中,弹性布局(Flex布局)已经成为构建响应式和动态界面的标准方法。它允许开发者更加灵活地控制元素的排列、对齐和尺寸调整,以适应不同屏幕大小和设备方向。标题“flex属性演示”暗示我们将深入探讨...

    flex组件的所有源文件

    3. **Flex增长和收缩(Flex Grow and Shrink)**:通过flex-grow和flex-shrink属性,可以控制Flex项目在空间充足或不足时如何分配额外空间或缩小。源文件中的CSS可能会设定项目的增长和收缩比例。 4. **Flexbasis...

    flex.pdf CSS3属性

    本文内容叙述撇开以往顺流而下的方式,直接以 box-flex 属性为切入口,直 入大本营,再铺开叙述。 有道桌面词典显示,”flex”一词中文有“收缩”之意。不过,从此属性实际上产 生的效果来看,无论怎样用“收缩”一...

    flex 各组件对应的css样式属性大全

    本文将深入探讨Flex组件及其相关的CSS样式属性,帮助开发者更好地理解和应用Flex布局。 一、Flex容器属性 1. `display`: 这是开启Flex布局的关键属性。设置为`flex`或`inline-flex`可以使一个元素成为Flex容器,...

    CSS Flex布局详解及其重要属性应用

    详述了flex布局下父级flex container及子元素flex item的相关属性,具体介绍了flex-direction、flex-wrap等关键属性,并详细阐述justify-content、align-items等排列与对齐的方式及其对页面的影响。 适合人群:前端...

    FLEX HashMap遍历并取到需要的值

    综上所述,"FLEX HashMap遍历并取到需要的值"的知识点主要涉及了Java中的HashMap数据结构、遍历方法、迭代器模式以及类型转换等概念。通过这些知识点,开发者可以灵活地在项目中使用HashMap进行高效的数据操作。

    flex 遍历Object对象内容的实现代码

    在Flex编程中,遍历Object对象内容是常见的需求,特别是在处理动态数据或进行对象属性检查时。本篇文章将深入探讨如何在Flex中遍历Object对象的内容,并提供相关的实现代码示例。 首先,让我们理解Flex中的Object类...

    MapABC Flex API 2.4 类参考

    你可以通过设置其几何形状、样式和属性来定制图形。 7. ServiceLayer类:用于与服务器进行数据交互,如加载WMS、WFS服务数据到地图上。这使得MapABC Flex API能够集成不同来源的地理数据。 8. Popup类:用于创建和...

    Flex中方法调用顺序的思考

    在Flex开发中,深入理解方法调用顺序是至关重要的,特别是在构建复杂的用户界面和应用程序时。Flex是一个基于ActionScript和MXML的开源框架,用于创建富互联网应用(RIA)。本篇我们将探讨Flex中方法调用的顺序,...

    flex映射java类

    当在Java项目中有一个`save(User user)`方法,接收一个User类型的JavaBean作为参数时,要在Flex端调用此方法,我们需要在ActionScript中创建一个与Java User类属性和方法对应的User类。这样做是为了确保数据在Flex和...

    去除flex chart 水印方法

    - 此方法适用于去除Flex Chart中的水印,但不一定适用于所有Flex Builder生成的应用程序。 - 在正式发布应用程序前,应确保所有使用的组件都已经获得了正确的许可证。 通过以上步骤,可以有效地去除Flex Builder...

    flex和as3之间互相调用的方法

    总结,Flex和AS3之间的互相调用是通过MXML组件的属性和方法、AS3类的实例化以及事件监听和派发来实现的。理解这种交互方式对于构建高效、可扩展的Flex应用至关重要。同时,使用如`FlexComponentKit_v4.mxp`这样的...

    flex 类与包的结构图

    一个类可以继承自另一个类,从而获取父类的属性和方法。这种继承关系有助于减少代码重复,提高代码复用。例如,`Button`类可能继承自`UIComponent`类,`UIComponent`又可能继承自`DisplayObject`类,形成了一条从...

    flex布局Flex实现常见布局的汇总

    然后其所有的直接子元素就变成flex子元素了,在flex里存在两根轴,叫主轴和交叉轴,互相垂直,主轴默认水平,flex子元素默认会沿主轴排列,可以控制flex子元素在主轴上伸缩,主轴方向可以设置,相关的css属性分为两...

Global site tag (gtag.js) - Google Analytics