class Test
public var test1:String = "";
public var test2:String = "";
public var test3:String = "";
}
上面Test类是测试用的类
里面有三个变量,我们可能通反射将其获取
package
{
import flash.utils.describeType;
/**
* 反射工具类
* @author jave.lin
* @date 2013-6-26
*/
public class ReflectionUtil{
/**
* 获取类定义的所有变量成员名称
*
*
* e.g.
* class Test{
* public var a:String;
* public var b:String;
* }
* var result:Vector. = getTypeVarsNameArr(Test);
* result就带有了["a", "b"]的结果;
* 但名称的顺序是无序的;
*
*
* */
public static function getTypeVarsNameArr(cls:Class):Vector.{
var result:Vector. = new Vector.();
var xml:XML = describeType(cls);
for (var i:int = 0; i < xml.factory.variable.length(); i++){
var xmlNode:XML = xml.factory.variable[i];
result.push(xml.factory.variable[i].@name);
}
return result;
}
}
}
调用:
var result:Vector. = getTypeVarsNameArr(Test);
trace(result);
结果我们可以在“表达式”列表中看到:
"result" __AS3__.vec.Vector. (@468c8f9)
[0] "test3"
[1] "test1"
[2] "test2"
fixed false
length 3