2009-06-06 6 views
0

エイリアンクラスのプライベート静的フィールドを変更する方法はありますか?例えばFlexでプライベート静的フィールドをハックする方法は?

package mx.managers { 
    public class TooltipManager ... { 
     private static var _impl:IToolTipManager2; // <- assign my own value here 
     ... 
    } 
} 

JavaではそれがリフレクションAPIを使用して、それを行うことが可能です。 Flexはどうですか?

答えて

4

いいえ、それはできません。

TooltipManagerの実装を変更する場合は、Flex SDKのSingletonクラスを参照してください。アプリケーションを初期化する前に、カスタム実装を作成してSingletonクラスを介して登録する必要があります。アプリケーションプリローダーをオーバーライドしてそこに登録するのが最善です。

0

あなたは余分な責任を負うことができると思うなら、同じパッケージでソースを独自のソースツリーにコピーし、必要な変更を適用することで、クラスをサルキーパッチすることができます。そうすれば、フレックスコンパイラはSDKの実装ではなく実装を使用します。

この手法は、別の方法で修正できない問題を解決するための最後の手段として使用されることがあります。欠点には、編集のクラスに依存する同じクラスまたは他のクラスにおける前方互換性および意図しない副作用などの問題が含まれます。

関連する問題