मैं जावा सीखना शुरू कर रहा हूं और सोच रहा था कि क्या मैं उसी कक्षा के किसी ऑब्जेक्ट को उसी कक्षा में किसी विधि के पैरामीटर के रूप में पास करना सामान्य/सुरक्षित हूं? मैंने कोशिश की और यह काम करता है, बस जानना चाहता था कि यह एक मानक अभ्यास है या नहीं।

नीचे कोड स्निपेट;



class App{

    private int databaseFlag=0;
    private String s;
    public App() {
        // TODO Auto-generated constructor stub
        s = "value";
    }


public static void main(String[] args) {
    App app = new App();

    app.init(app);

    app.methodOne();

    app.methodTwo();
    }

public void init(App app){ 

    DatabaseClass dbc = new DatabaseClass();

    app.databaseFlag = dbc.callDatabaseMethodAndGetFlag(s);
}

public void methodOne(){
    // do something with databaseFlag

}

public void methodTwo(){
    // do something more then reset databaseFlag=0;
}

}
1
Vishal T 6 अप्रैल 2020, 19:47

1 उत्तर

सबसे बढ़िया उत्तर

भले ही, वस्तु की विधि के साथ, आप अन्य विधि को उसके नाम से बुला सकते हैं अर्थात,

class App {
        private void init () {
            //some code
            someOtherMethod();
        }

        private void someOtherMethod() {
            //someother code
        }

        public static void main(String[] args) {
            App a = new App();
            a.init()
        }
    }

देखें कि कैसे someOtherMethod को init से कॉल किया जा रहा है? आपको यहां अपने वर्ग संदर्भ की आवश्यकता नहीं है।

आपके विशिष्ट प्रश्न का उत्तर देने के लिए, जावा में, प्रत्येक ऑब्जेक्ट के पास इसके संदर्भ तक पहुंच होती है और इसे this कहा जाता है, आपको ऐप ऑब्जेक्ट में पास करने की आवश्यकता नहीं है। यदि आपको ऑब्जेक्ट वेरिएबल्स को बिल्कुल संदर्भित करना है, तो आप इसे इसके द्वारा कर सकते हैं

class App{

    private int databaseFlag=0;
    private String s;
    public App() {
        // TODO Auto-generated constructor stub
        s = "value";
    }

    public static void main(String[] args) {
        App app = new App();
        app.init();
        app.methodOne();
        app.methodTwo();
    }

    public void init(){ 

        DatabaseClass dbc = new DatabaseClass();

        this.databaseFlag = dbc.callDatabaseMethodAndGetFlag(s);
    }

    public void methodOne(){
        // do something with databaseFlag

    }

    public void methodTwo(){
        // do something more then reset databaseFlag=0;
    }
}
0
Em Ae 6 अप्रैल 2020, 17:38