【发布时间】:2014-03-12 13:33:55
【问题描述】:
我是一名 Java 程序员,正在学习 Adobe Flex。
是否可以在 Flex 中进行我可以在 Java 中执行的各种反射(获取类的构造函数、获取构造函数的参数列表、使用给定参数集调用构造函数)?
如果是这样,有人可以举个例子吗?
【问题讨论】:
标签: apache-flex reflection inversion-of-control
我是一名 Java 程序员,正在学习 Adobe Flex。
是否可以在 Flex 中进行我可以在 Java 中执行的各种反射(获取类的构造函数、获取构造函数的参数列表、使用给定参数集调用构造函数)?
如果是这样,有人可以举个例子吗?
【问题讨论】:
标签: apache-flex reflection inversion-of-control
你可以用这种方式实例化一个类
var classN:Class = getDefinitionByName("package.goes.here::ClassName") as Class;
var instanceClass:Object = new classN();
使用 describeType 访问属性
var sourceInfo:XML = describeType(instanceClass);
var objectProperty:XML;
var propertyName:String;
//loop through the accessors
for each(objectProperty in sourceInfo.accessor) {
if(objectProperty.@access == "readwrite") {
propertyName = objectProperty.@name;
//do something
}
}
【讨论】:
扩展@Tostis 的答案:
1)可以使用类对象(而不是实例对象)来获取对象信息:
var classN:Class = getDefinitionByName("package.goes.here::ClassName") as Class;
var sourceInfo:XML = describeType(classN);
2) 为 Class 对象返回的信息包括一个
如果您使用实例类,则可以使用相同的数据,但
更新
我通过 StackOverflow 进行了检查,发现 this 参考 - 简短的回答,看起来没有像 Function.apply() 允许的那样使用任意参数列表调用构造函数的好方法。
【讨论】: