Come posso elencare tutte le proprietà const definite in una classe
-
28-09-2019 - |
Domanda
Come posso elencare tutti i nomi (e valori) dei const pubblici (e privati/protetti) definiti in una classe?
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
// ...
}
}
Soluzione
In fase di esecuzione, puoi utilizzare descriptionType() per elencare tutte le variabili pubbliche (non troppo sicuro dei const) e anche molte più informazioni.
http://www.adobe.com/livedocs/flash/9.0/ActionScriptLangRefV3/flash/utils/package.html#describeType()
I privati sono più difficili da ottenere.
Non sono sicuro che non sarebbe più veloce creare un array di costanti e quindi utilizzare array.indexOf(type)
PSCredo anche che ora, da qualche parte, esista una versione JSON di descriptionType().
Altri suggerimenti
Funziona con as3 e 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;
}
Il completamento automatico di FlashBuilder ti fornirà tutte le costanti sulla tua classe e molto altro ancora.