के खिलाफ शिकायत ठीक है, इसलिए जहां तक मुझे पता है, मैं इन चीजों को final
चर के बारे में समझता हूं।अंतिम चर
- यह केवल एक बार
- सभी
final
चर सौंपा जाना चाहिए निर्माता से पहले प्रारंभ किया जाना चाहिए पूरा करता
अब ऊपर का उपयोग कर, मुझे समझ नहीं आता नीचे कैसे काम नहीं करता:
public class FinalTest implements AnotherClass {
private final Something something;
private final otherthing;
@Override
public void setStuff(Something something) {
this.something = something;
this.otherthing = new SomeClass(something);
}
public FinalTest(Something something) {
setStuff(something);
}
}
कन्स्ट्रक्टर final
चर को पूरा करने से पहले यहां सेट किया जा रहा है। तो संकलक इसके खिलाफ शिकायत क्यों करता है?
'अन्य चीज़' का प्रकार क्या है? – maerics
यहां आपके लिए निश्चित असाइनमेंट पर जेएलएस अध्याय है। http://docs.oracle.com/javase/specs/jls/se7/html/jls-16.html आनंद लें। –
अंतिम चर अच्छे हैं लेकिन कई बार वे समझ में नहीं आते हैं। यदि आपके पास अपनी कक्षा के भीतर से इसे सेट करने का कोई तरीका नहीं है, तो यह अभी भी "तर्कसंगत" अंतिम है, इसलिए इसे मजबूर करने पर भी लटका न लें। एक कन्स्ट्रक्टर (कक्षा वर्ग को खत्म करने के लिए ज़िम्मेदार) से एक विधि (जो आपकी कक्षा को एक पूर्ण राज्य में मानती है) को कॉल करने की वैधता पर भी विचार करें। यह देखभाल के साथ किया जाना चाहिए। –