जावा हमेशा मूल्य से गुजरता है और सी ++ भावना में कोई वैश्विक चर नहीं होता है। तो यदि आप सी ++ में ऐसा करना चाहते हैं तो आपको नया मान वापस करने की आवश्यकता है।
Thusly:
public int change(int x) {
return ++x;
// or
// return x + 1;
}
यह परीक्षण करने के लिए:
int x = 2;
change(x);
System.out.println(x); // returns 2
x = change(x);
System.out.println(x); // returns 3
तो यह विधि change
कहा जा जाने के लिए कोई मतलब नहीं है, यह calculateThisInt
की तर्ज पर अधिक समझदार है।
जावा मूल्य से वस्तुएं पास करता है। लेकिन Mark Byers उल्लेख करता है कि Integer कक्षा अपरिवर्तनीय है और आप अपाचे कॉमन्स लाइब्रेरी से MutableInt
का उपयोग कर सकते हैं।वर्णन करने के लिए यह कैसे काम करता है कि आप अपने उदाहरण के लिए यह अपने आप को लागू कर सकते हैं:
public class MyInt() {
public int i;
public void setInt(int i) {
this.i = i;
}
public int getInt() {
return this.i;
}
public int increment() {
this.i++;
}
}
आप अपने change
समारोह को बदलने के लिए तर्क के रूप में ऊपर MyInt
वस्तु की आवश्यकता है:
public void change(MyInt i) {
i.increment();
}
उपयोग:
MyInt x = new MyInt();
x.setInt(2);
change(x);
System.out.println(x.getInt); // returns 3
आपके मामले में आपबदलना चाहते हैंऑब्जेक्ट ...
public void changeVector(Vector v) {
// anything you do with 'v' will change it even
// for the scope that called this method
}
// Usage:
Vector v = new Vector();
changeVector(v);
// v should be changed after calling change vector method
आशा है कि यह सब समझ में आता है।
जावा हमेशा मूल्य से गुजरता है। –
उत्तर की संभावना है, "आप नहीं कर सकते" - लेकिन हमें प्रासंगिक जावा कोड देकर शुरू करें ... –
[जावा में संदर्भ द्वारा कैसे पास किया जाए] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/5614562/कैसे-पास-दर-संदर्भ-इन-जावा) –