मेरे पास एक AppConstants वर्ग है जहां मेरे पास कुछ स्थिर चर और स्थिर विधियां हैं। चर जैसे

public static final String BASE_URL = "http://www.somevalue.com/api/";
private static String MID_FIX_API;
public static final String API_CALL = BASE_URL + getMidFixApi() + "/" + GET_KEY(appContext, KEY_FOR_KEY);

चूंकि MID_FIX_API निजी है इसलिए मेरे पास इसका सार्वजनिक गेट्टर/सेटर है। जब मैं इसकी सेटर विधि AppConstants.setMidFixApi("value"); द्वारा किसी अन्य वर्ग से इसका मान निर्धारित करता हूं और इसकी गेटटर विधि से इसका मूल्य प्राप्त करता हूं AppConstants.getMidFixApi(); अब तक सब कुछ ठीक है
लेकिन
समस्या तब आती है जब उपरोक्त पंक्तियों के बाद मैं ऊपर दिए गए कोड में दिखाए गए स्थिर चर API_CALL को कॉल करता हूं, जो चर MID_FIX_API के गेटर से मूल्य प्राप्त करता है और इसके बावजूद शून्य वापस आ जाता है, हमने इसे पहले मान दिया है।

यह है पंक्तियों का पूरा क्रम

AppConstants.setMidFixApi("getCategories");   // setting value
Log.e("InsideSuccess", "MID_FIX_API = " + AppConstants.getMidFixApi());  // working fine till here

Log.e("InsideSuccess", "API_URL = "+AppConstants.API_CALL);   // here I'm getting like this http://www.somevalue.com/api/null/somePostFix

कृपया मुझे इंगित करें कि मैं क्या गलत कर रहा हूँ।

1
Inzimam Tariq IT 30 अक्टूबर 2017, 12:54

2 जवाब

सबसे बढ़िया उत्तर

जैसा कि पहले ही उल्लेख किया गया है कि वेरिएबल API_CALL को एक बार इनिशियलाइज़ किया जाता है, MID_FIX_API के वर्तमान मान के साथ, जो शुरू में शून्य है।

चारों ओर एक स्थिर विधि (getApiCall()) बनाना है जो केवल उस मान की गणना करता है जिसे पहले स्थिर रूप से प्रारंभ किया गया था, जो कि उतना ही आसान लगेगा:

public static String getApiCall(){
    return BASE_URL + getMidFixApi() + "/" + GET_KEY(appContext, KEY_FOR_KEY);
}

जिसे तब आसान तरीके से AppConstants.getApiCall() कहा जा सकता है।

1
Lino 30 अक्टूबर 2017, 13:03

यह प्रारंभिक आदेश के साथ करना है। जब आप AppConstants.setMidFixApi("getCategories") को कॉल करते हैं तो AppConstants वर्ग मान सेट होने से पहले प्रारंभ हो जाएगा। इसलिए जब API_CALL को इनिशियलाइज़ किया जाता है, तो MID_FIX_API को अभी तक असाइन नहीं किया जाता है...

1
Per Huss 30 अक्टूबर 2017, 12:59