سؤال

هل هذا شيء ممكن في تصفيفات؟

جافا:

URLFetcherFactory.setCreator(
    new IURLFetcherCreator() {
        public IURLFetcher create() {
            return new URLFetcher();
        }
    }
);

ActionScript:

?

لقد كنت أتساءل عن هذا ولم أتمكن من العثور على أي شيء يشير إلى أنه ممكن. احسب إذا كان ذلك كنت ممكن، سأكون قادرا على إيجاد إجابة هنا. شكرا! صخور stackoverflow!

هل كانت مفيدة؟

المحلول

لا يمكنك إنشاء مثيل لواجهة. ومع ذلك، يمكنك إنشاء فئة المصنع:

public class URLFetcherCreator : IURLFetcherCreator {
    private var _cls : Class;

    public URLFetcherCreator(Class cls) {
        this._cls = cls;
    }

    public function create() : IURLFetcher
    {
        return new cls();
    }
}

بدلا من ذلك، قم بتغيير SetCreator لقبول دالة تقوم بإرجاع IURLFetcher:

URLFetcherFactory.setCreator(
    function() : IURLFetcher {
        return new URLFetcher();
    }
);

نصائح أخرى

جرب هذا:

URLFetcherFactory.setCreator(
    new IURLFetcherCreator() {
            public function create():IURLFetcher  {
                    return new URLFetcher();
            }
    }
);

لا يمكنك استخدام فئات داخلية مجهولة في AS3. بالنسبة للحالات الخاصة مثل عمليات الاتصال، يمكنك استخدام الوظيفة بدلا من الفئات الداخلية المجهولية.

جافا:

interface Callback {
     void done(String info);
}
class Service {
     void process(Callback callback);
}
...
myService.process(new Callback() {
     void done(String info) {
          // trace(info);
     }
}

AS3:

class Service {
     public function process(callback:Function):void;
}
...
myService.process(function(info:String):void {
     trace(info);
});
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top