2014-03-12 53 views
1

我是學習Adobe Flex的Java程序員。adobe flex中的類反射

是否有可能執行的各種反思,我可以用Java做的(獲得類的構造函數,得到一個構造函數的參數列表中,用一組給定的參數調用構造函數)在Flex中?

如果是這樣,有人能指點我一個例子嗎?

回答

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([email protected]access == "readwrite") { 
     propertyName = [email protected]; 
     //do something 
    } 
} 
+0

謝謝,但我怎麼問一個構造函數的參數列表?我如何用這些參數調用構造函數? – spierepf

0

擴大從@Tostis答案:

1)你可以使用類對象(而不是實例對象)來獲取對象信息:

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

2)爲Class對象返回的信息包括<工廠>標記,其中包含構造函數(在<構造函數>標記中)及其參數。

如果您使用實例類,則相同的數據可用,但<工廠的>標記中不可用。不過,如果你想這個動態實例化對象,你不會有一個實例對象下手......

更新

我做了檢查,通過StackOverflow的,發現this參考 - 簡短的回答,它看起來不像是有一個很好的方法來調用帶有任意參數列表的構造函數,就像Function.apply()允許的那樣。