1

ではAS3、次のメソッドは任意のタイプのパラメータを受け入れます。

public function myFunc(data:*) :void

タイプを特定のパッケージに限定することは可能ですか? このようなものかもしれません:

public function myFunc(data:(my.package:*)) //Accepts any type from my.package 
4

2 に答える 2

3

可能ですが、実行時にのみ型制御を行います。

import flash.utils.getQualifiedClassName;
public function myFunc(data:*):void {
    if (data is Object) {
        var fqcn:String=getQualifiedClassName(data);
        if (fqcn.slice(0,10)!='my.package') return; // otherwise work
        // work here
    } // simple types process if needed
}
于 2013-02-25T12:11:33.600 に答える
1

これは設計上の問題のように聞こえます。コンパイル中にこれを機能させる 1 つの方法は、パラメーターの型がカスタム クラスの場合です。

public function myFunc(data:MyCustomClass):void

my.package内部のすべてのクラスが多様であると仮定すると、拡張するカスタム基本クラスを作成し、この基本クラスからObjectすべてのクラスを拡張することができます。my.packageもちろん、ただし、my.packageクラスの継承がそれほど広くない場合は、ここまで到達する必要はありません。たとえば、そのDisplayObject中のすべてのクラスmy.packageがそのタイプである場合にのみ、から拡張する必要があります。

を使用して目的を達成する方法もあるかもしれませんnamespacesが、私にはわかりません。

于 2013-02-25T13:44:10.890 に答える