【问题标题】:How can I list all the const properties defined in a class如何列出类中定义的所有 const 属性
【发布时间】:2010-10-06 10:32:03
【问题描述】:

如何列出类中定义的公共(和私有/受保护)const 的所有名称(和值)?

public class Layers {

    public const BACKGROUND:String = "background";
    public const PARENT:String = "parent";
    public const MAP:String = "map";
    public const LINES:String = "lines";
    public const POINTS:String = "points";
    public const WINDOWS:String = "windows";

    ... 

    public function isValidValue(type:String) {
        // ...           
        // if type is a value of a constant return TRUE
        // ...
    }

}

【问题讨论】:

    标签: flash actionscript-3 constants enumerator


    【解决方案1】:

    这适用于 as3 和 flex 4.5.1

    public static function isValidValue(type:String):Boolean {
    
            var m_constNameList:XMLList = describeType(Layers).descendants("constant");
    
            for each(var obj:Object in m_constNameList){
                if (type == Layers[obj.@name]){
                    return true;
                }
            }
            return false;
        }
    

    【讨论】:

      【解决方案2】:

      在运行时,您可以使用 describeType() 列出所有公共变量(对 const 不太确定)以及更多信息。

      http://www.adobe.com/livedocs/flash/9.0/ActionScriptLangRefV3/flash/utils/package.html#describeType()

      私人更难获得。

      不确定创建一个常量数组然后使用 array.indexOf(type) 是否会更快

      附:我也相信现在某个地方有一个 JSON 版本的 describeType()。

      【讨论】:

      • 哇!数组肯定更快!但是阅读类定义我确信我不会忘记在两个地方更新值。谢谢。
      【解决方案3】:

      FlashBuilder 自动补全将为您提供类中的所有常量等等。

      http://www.adobe.com/products/flashbuilder/

      【讨论】:

      • 我在写的时候一点兴趣都没有得到这份清单!运行时检查我是否传递了一个可以理解的值。
      猜你喜欢
      • 2010-11-15
      • 1970-01-01
      • 1970-01-01
      • 2011-12-06
      • 1970-01-01
      • 2021-10-16
      • 2019-04-08
      • 1970-01-01
      相关资源
      最近更新 更多