我正在使用優秀的org.as3commons.reflect和org.as3commons.lang庫,並遇到了麻煩。我在我的一個類中有一個靜態方法,需要在的類中進行反射。反射庫有一個Type.forClass(clazz:Class)靜態方法,顯然需要一個Class變量。有沒有這個關鍵字允許在靜態方法/代碼,所以現在我需要知道是否有一種方法來獲取我的靜態方法被調用的類。靜態方法的類反射
我需要一些能在非調試版本的Flash播放器中工作的東西,所以任何Error.getStackTrace()技巧都無法工作。太糟糕了,在正常的虛擬機中沒有堆棧跟蹤可用。
import org.as3commons.lang.ClassUtils;
import org.as3commons.reflect.Type;
protected static function doReflection(): void
{
var aClass: Class = ClassUtils.forInstance(this); // this not allowed in static methods
var ct: Type = Type.forClass(aClass);
// do stuff with type
}
我放棄了在Google和其他網站上搜索;總是最終得到有關靜態成員,性能問題,一切除我正在尋找的一切有關的教程和技巧。總的來說,我想在靜態成員中緩存一大堆關於類的東西,以便每次類實例化時都可以節省不必要的工作。
任何幫助,將不勝感激。
該靜態方法在類的第一個實例化時調用,類似於protected static var _classInitialized:Boolean = init();好的,所以代碼會變成類似「所有實例檢查類是否已被初始化,如果沒有,請調用受保護的靜態函數init(this)」。希望有一個更直接的方法,但是,這將工作,謝謝。 – Atorian 2010-12-16 14:09:40