मुझे समझने में एक बड़ी समस्या है कि जावा में रैपर क्लास संदर्भ प्रकार की तरह व्यवहार क्यों नहीं करती है। उदाहरण:जावा में रैपर क्लास संदर्भ प्रकार की तरह व्यवहार क्यों नहीं करती है?
Integer one = 10;
Integer two = one;
one = 20;
System.out.println(one);
System.out.println(two);
उत्पादन होगा:
मैंने सोचा था कि two
इस उदाहरण जहां मैं अपने ही वर्ग बनाने में की तरह 20 हो जाएगा:
class OwnInteger {
private int integer;
public OwnInteger(int integer) {
this.integer = integer;
}
public int getInteger() {
return integer;
}
public void setInteger(int integer) {
this.integer = integer;
}
}
OwnInteger one = new OwnInteger(10);
OwnInteger two = one;
one.setInteger(20);
System.out.println(one.getInteger());
System.out.println(two.getInteger());
तो सवाल, इंटीजर wra है पीपर वर्ग विशेष? जैसा कि मैंने अपने उदाहरणों में दिखाया है, यह क्यों व्यवहार करता है?
'एक = 20; 'और' one.setInteger (20);' के बीच एक बड़ा अंतर है, और इसमें रैपर वर्गों के साथ कुछ लेना देना नहीं है। पहले स्निपेट का 'एक = 20;' 'एक = नया स्वामित्व (20);' दूसरे स्निपेट में बराबर होगा। – Eran
ये कक्षाएं संदर्भ प्रकारों की तरह व्यवहार करती हैं, संभवतः क्योंकि वे _are_ संदर्भ प्रकार हैं। जब आप किसी भिन्न ऑब्जेक्ट के संदर्भ को इंगित करते हैं, तो आप अन्य पॉइंटर को नहीं बदलते हैं। पॉइंटर्स स्वतंत्र हैं। यह केवल _object_ में परिवर्तन है जो किसी भी पॉइंटर के माध्यम से उसी _object_ पर दिखाई देता है। याद रखें कि जेएलएस कहता है, जावा "संदर्भ ... पॉइंटर्स हैं"। –