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

c# - Reactive Extensions ControlScheduler -

multithreading - Reorderings in java memory model -

java - Add color code support to a Bukkit plugin -