java - How does having a final variable in a foreach loop work -


कोड के इस भाग पर विचार करें

  सार्वजनिक स्थिर शून्य मुख्य (स्ट्रिंग [] args) { के लिए (अंतिम स्ट्रिंग्स: arrays.asList ("a", "b", "c")) {System.out.println (s); }}  

यह कोड किसी विशिष्ट उद्देश्य की पूर्ति नहीं करता है, लेकिन अंतिम foreach-loop चर का उपयोग प्रदर्शित करता है।

यह कैसे काम करता है? एक एकल चर कैसे अंतिम हो सकता है, लेकिन इसे प्रत्येक लूप के साथ एक अलग मान निर्दिष्ट किया जाता है। या क्या इस चर को विभिन्न स्कोप / स्टैक में कई बार घोषित किया गया है?

यह जावा भाषा विशिष्टता में समझाया गया है (JLS),:

बयान के लिए बढ़ाया रूप है:

  EnhancedForStatement: के लिए (FormalParameter: अभिव्यक्ति) वक्तव्य FormalParameter: VariableModifiers_opt प्रकार VariableDeclaratorId VariableDeclaratorId: पहचानकर्ता VariableDeclaratorId []  

...

बयान के लिए बढ़ाया प्रपत्र के बयान के लिए एक मूल के बराबर है:

  के लिए (I #i = अभिव्यक्ति। निषेध (); # i.has अगला ();) {VariableModifiers_opt TargetType Identifier = (TargetType) # i.next (); वक्तव्य}  

इस प्रकार, पहचानकर्ता पाश से प्रत्येक यात्रा पर redeclared है।


Comments

Popular posts from this blog

scala - Play Framework - how to bind form to a session field -

Django Celery - running scheduled tasks -

perl - 'Unquoted string ".." may clash with future reserved word' but only when package is used -