gwt - Inject into anonymous inner class (GIN) -


मेरे पास ऐसा कुछ है:

  request.findAllProjects ()। आग (नया ExtReceiver & lt ; सूची & lt; परियोजनाप्रोक्सी & gt; & gt; () {@ ऑवरराइड पब्लिक व्हॉयड ऑन स्यूवेस (लिस्ट & amp; प्रोजेक्ट प्रॉक्सी & gt; प्रतिक्रिया) {view.setProjects (प्रतिसाद);}});   

यह अमूर्त वर्ग ExtReceiver के गुमनाम आंतरिक वर्ग है एक्स्ट्रिसेवर एक त्रुटिहैंडलर के साथ त्रुटियों को संभालने के लिए है जिसे मैं प्रदान करना चाहता हूं।

  सार्वजनिक अमूर्त वर्ग ExtReceiver & lt; T & gt; प्राप्तकर्ता प्राप्त करता है & lt; T & gt; {निजी त्रुटिहैंडलर त्रुटिहैंडलर; सार्वजनिक ExtReceiver () {} @ सार्वजनिक विन्ड सेट एररहेन्डलर (त्रुटिहैंडलर त्रुटिहैंडलर) {this.errorHandler = errorHandler; } @ सरस्वती पर सार्वजनिक सार शून्य को ओवरराइड (टी प्रतिक्रिया); @ विफलता पर सार्वजनिक शून्य को ओवरराइड (सर्वरफ़ाइलर त्रुटि) {errorHandler.exception (त्रुटि); } @ ओवरराइड सार्वजनिक शून्य पर उल्लंघन (सेट & lt; उल्लंघन & gt; त्रुटियां) {मान्यकरणउलिल.प्रक्रिया उल्लंघन (त्रुटियां); }}   

मुझे समझ में आ रहा है कि यह क्यों काम नहीं कर सकता, क्योंकि मैं नया ऑपरेटर का उपयोग करता हूं। लेकिन मैं इस तरह से कुछ कैसे कर सकता हूं। मैं उस गुमनाम वर्ग को रखना चाहता हूं और उसे अपनी फ़ाइल या किसी चीज़ में नहीं रखना चाहता हूं मैं उस त्रुटि को कैसे इंजेक्ट कर सकता हांडलर? स्थिर इंजेक्शन के बारे में सोचा, लेकिन ऐसा दिखता है कि यह भी काम नहीं करता है (हो सकता है कि मैं एक अज्ञात वर्ग के साथ विरासत के कारण बना)

सामान्य Guice के विपरीत मैं एक इंजेक्टर नहीं जानता। ) कॉल करें।

जानकारी के लिए: यह एक अनुरोध है फ़ैक्टर कॉल

क्यों डॉन ' इसके बजाय आप अलग-अलग सेटएर्रहाहैंडल सेटर बनाने के बजाय त्रुटिहैंडलर पैरामीटर को अपने अमूर्त वर्ग के कन्स्ट्रक्टर में डालते हैं, कुछ ऐसा:

  सार्वजनिक अमूर्त वर्ग ExtReceiver & lt; T & gt; प्राप्तकर्ता प्राप्त करता है & lt; T & gt; {निजी त्रुटिहैंडलर त्रुटिहैंडलर; @ सार्वजनिक ExtReceiver (ErrorHandler त्रुटिहैंडलर) को निकालें {this.errorHandler = errorHandler; Bindings declare:   
  सार्वजनिक वर्ग MyClientModule AbstractGinModule का विस्तार करता है {संरक्षित शून्य कॉन्फ़िगर () {बाँध (ErrorHandler। वर्ग) .इन (Singleton.class); }}   

अपने त्रुटि के लिए एक Ginjector घोषित करें, यह मॉड्यूल के साथ annotating वर्ग:

  @ जीन मॉड्यूल (MyClientModule.class) सार्वजनिक इंटरफ़ेस MyErrorHandlerInjector Ginjector का विस्तार करता है {ErrorHandler getErrorHandler (); }   

और उसके बाद इसे इस तरह प्रयोग करें:

  माइएरहार्डलरगिनजेक्टर इंजेक्टर = GWT.create (MyErrorHandlerGinjector.class); त्रुटिहैंडलर त्रुटिहाँडलर = इंजेक्टर.गेटईआररहार्डलर (); Request.findAllProjects ()। आग (नया ExtReceiver & lt; List & lt; ProjectProxy & gt; & gt; (errorHandler) {@Override सार्वजनिक शून्य पर सफलता (सूची & lt; ProjectProxy & gt; प्रतिक्रिया) {view.setProjects (प्रतिक्रिया);}});   

मुझे लगता है कि यह काम करना चाहिए।

Comments