निम्नलिखित कोड:
void someMethod(Object value)
{
String suffix = getSuffix();
if (suffix != null)
value += suffix;
[...]
}
JDK 8 में त्रुटियों के बिना संकलन (-source 1.6 का उपयोग करके), लेकिन त्रुटि संदेश के साथ JDK 6 में विफल रहता है:
Operator '+' cannot be applied to java.lang.Object and java.lang.String
जबकि मैं समझता हूं कि त्रुटि क्या है, यह जेडीके 8 के साथ क्यों संकलन करता है? क्या यह कहीं भी प्रलेखित है?
मुझे लगता है कि मूल्य स्ट्रिंग नहीं होना चाहिए। यदि मूल्य एक पूर्णांक है, तो मैं इसे एक स्ट्रिंग जोड़ने के लिए समझ में नहीं आता है। Maybye आप स्ट्रिंग के लिए डाली मूल्य की कोशिश कर सकते
—
fedoraHacker
@fedoraHacker
—
ग्रोड्रिग्ज
value = value + suffix
मूल्य के प्रकार की परवाह किए बिना अभिव्यक्ति पूरी तरह से कानूनी है। तो ऐसा लगता है कि मुझे value += suffix
भी कानूनी होना चाहिए।
वाह, मुझे पता नहीं था। मैंने सोचा था कि विभिन्न वस्तुओं का पूरा बिंदु डेटा क्या कर सकता है और क्या नहीं कर सकता के लिए नियमों को परिभाषित करना था। अलग-अलग डेटाैटिप्स और ऑब्जेक्ट होने का पूरा बिंदु यह सुनिश्चित करने के लिए ज़िम्मेदारी को अलग करना है कि कोई एक चीज़ करता है, लेकिन यह अच्छी तरह से करता है। मैं केवल इस बात से चकित हूं कि आप उस तरह से डेटाटिप्स मिला सकते हैं। वैसे आप हर रोज कुछ सीखते हैं :) और मान = मान + प्रत्यय मूल्य + = प्रत्यय के समान है, इसलिए मैं वाक्यविन्यास का विवाद नहीं करता
—
फेडोराहैकर
हां लेकिन स्ट्रिंग प्रकार कुछ विशेष है। यहां + ऑपरेटर "स्ट्रिंग कॉन्फैनेटेशन ऑपरेटर" है; यदि केवल एक ऑपरेंड एक स्ट्रिंग है, तो दूसरा एक्सप्रेशन के मूल्यांकन से पहले एक स्ट्रिंग में बदल जाता है। JLS का यह खंड देखें ।
—
ग्रोड्रिगुएज़
आह मैं देख रहा हूँ, पता नहीं स्ट्रिंग इसे इस तरह परिवर्तित कर दिया। प्रश्न का उत्तर दिए जाने के बाद भी उत्तर देने के लिए धन्यवाद!
—
फेडोराहैकर