मेरे पास यह नेटवर्क मॉड्यूल है। मैं त्रुटि मॉड्यूल की स्थिर विधि में नेटवर्क मॉड्यूल इंजेक्ट करना चाहता हूं।स्थैतिक विधि में इंजेक्शन डैगर कर सकते हैं?
@Module
public class NetworkModule {
private final String END_POINT = "https://www.myurl.com/";
@Provides
@Singleton
public OkHttpClient getOkHttpClient() {
OkHttpClient okHttpClient = builder.build();
return okHttpClient;
}
@Provides
@Singleton
public GsonConverterFactory getGsonConverterFactory() {
return GsonConverterFactory.create();
}
@Provides
@Singleton
public Retrofit getRetrofit(OkHttpClient okHttpClient, GsonConverterFactory gsonConverterFactory) {
return new Retrofit.Builder()
.baseUrl(END_POINT)
.client(okHttpClient)
.addConverterFactory(gsonConverterFactory)
.build();
}
@Provides
@Singleton
public RetrofitService getRetrofitService(Retrofit retrofit) {
return retrofit.create(RetrofitService.class);
}
और मैं के रूप में स्थिर विधि में इस मॉड्यूल इंजेक्षन करना चाहते हैं:
public class ErrorUtils {
@Inject
static Retrofit retrofit;
public static RestError parseError(Response<?> response) {
**//showing error while writing this line**
MyApplication.getComponent().inject(ErrorUtils.class);
Converter<ResponseBody, RestError> converter = retrofit.responseBodyConverter(RestError.class, new Annotation[0]);
RestError error;
try {
error = converter.convert(response.errorBody());
} catch (IOException e) {
return new RestError();
}
return error;
}
}
हम कैसे स्थिर विधि में मॉड्यूल इंजेक्षन कर सकते हैं, किसी भी सुझाव?
"स्टेटिक विधियों और चर आम तौर पर एक बुरा विचार है" ... सार्वजनिक स्थैतिक मंशा के बारे में क्या है कॉलिंग इंटेंट()? –
मैं वहां एक जीसन ऑब्जेक्ट तक पहुंचना चाहता हूं इसलिए मुझे विधि के अंदर एक नया उदाहरण बनाना है या सरल सिंगलटन का उपयोग स्थिर विधि getInstance() के बजाय डैगर के बजाय करना है ...? –
@LeoDroidcoder स्थिर वस्तुओं (जैसे सिंगलेट्स) के साथ समस्या को ग्लोबल स्टेट कहा जाता है। यह असंभव के करीब परीक्षण कर सकता है और यदि आप कहीं से भी कुछ पढ़ और लिख सकते हैं तो आवश्यक से अधिक भ्रम पैदा कर सकते हैं। कल्पना करें कि आप अपने ऐप के 2 अलग-अलग स्थानों में 'डेट' ऑब्जेक्ट को अलग-अलग करना चाहते हैं, लेकिन उसी' जीसन' इंस्टेंस को साझा करें। हालांकि जीसन थोड़ा दुष्प्रभावों के साथ एक हानिरहित उदाहरण है। –