स्काला में बीच का अंतर,स्काला में, अंतिम वैल और वैल
val a = 1
और
के बीच अंतर क्या हैfinal val fa = 1
स्काला में बीच का अंतर,स्काला में, अंतिम वैल और वैल
val a = 1
और
के बीच अंतर क्या हैfinal val fa = 1
final
सदस्यों अधिरोहित जा सकता है, कहते हैं, एक उप-वर्ग या विशेषता में ।
कानूनी:
class A {
val a = 1
}
class B extends A {
override val a = 2
}
अवैध:
class A {
final val a = 1
}
class B extends A {
override val a = 2
}
आप इस जैसे एक त्रुटि मिल जाएगा:
:9: error: overriding value a in class A of type Int(1);
value a cannot override final member
स्काला में, final
घोषणा करता है कि एक सदस्य नहीं हो सकता है उपclasses में overridden। उदाहरण के लिए:
class Parent {
val a = 1
final val b = 2
}
class Subclass extends Parent {
override val a = 3 // this line will compile
override val b = 4 // this line will not compile
}
इसके अलावा, जैसा Why are `private val` and `private final val` different? में चर्चा की है, अगर एक final val
क्षेत्र एक "निरंतर मूल्य", एक निरंतर आदिम प्रकार, कर रहा है उस तक पहुँच बाईटकोड के साथ सीधे कि मूल्य लोड करने के लिए बदल दिया जाएगा।
सभी 'अंतिम वाल्स' के लिए लगातार फोल्डिंग होता है, न केवल निजी, लंबे समय तक क्योंकि उनके प्रकार अनुमानित है। –
अच्छा बिंदु। संपादित। – wingedsubmariner
आप गैर-final
val
एस (जावा) एनोटेशन में भी उपयोग नहीं कर सकते हैं।
, इस:
@GameRegistry.ObjectHolder(Reference.MOD_ID)
object ModItems{
}
केवल संकलन होगा अगर MOD_ID
final
के रूप में घोषित किया गया है।
हालांकि यह प्रश्न समवर्ती पीओवी से तैयार किया गया है, मुख्य उत्तर वैल और अंतिम मूल्य के बीच अंतर प्रकट करता है। –
ऐसा लगता है कि 'अंतिम वैल' स्थिरता को उस कोड में रेखांकित करने की अनुमति देता है जो इसका उपयोग करता है: http://stackoverflow.com/a/13412894/14955 – Thilo