【问题标题】:class reflection in adobe flexadobe flex 中的类反射
【发布时间】:2014-03-12 13:33:55
【问题描述】:

我是一名 Java 程序员,正在学习 Adob​​e Flex。

是否可以在 Flex 中进行我可以在 Java 中执行的各种反射(获取类的构造函数、获取构造函数的参数列表、使用给定参数集调用构造函数)?

如果是这样,有人可以举个例子吗?

【问题讨论】:

    标签: apache-flex reflection inversion-of-control


    【解决方案1】:

    你可以用这种方式实例化一个类

    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
        }
    }
    

    【讨论】:

    • 谢谢,但是如何向构造函数询问其参数列表?如何使用这些参数调用构造函数?
    【解决方案2】:

    扩展@Tostis 的答案:

    1)可以使用类对象(而不是实例对象)来获取对象信息:

    var classN:Class = getDefinitionByName("package.goes.here::ClassName") as Class;
    var sourceInfo:XML = describeType(classN);
    

    2) 为 Class 对象返回的信息包括一个 标记,所有信息包括构造函数(在 标记中)及其参数。

    如果您使用实例类,则可以使用相同的数据,但 标记中没有。但是,如果您希望它动态地实例化对象,您将没有实例对象开始......

    更新

    我通过 StackOverflow 进行了检查,发现 this 参考 - 简短的回答,看起来没有像 Function.apply() 允许的那样使用任意参数列表调用构造函数的好方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多