CodeGym /جاوا بلاگ /Random-SD /Java return Keyword
John Squirrels
سطح
San Francisco

Java return Keyword

گروپ ۾ شايع ٿيل
جيئن ته اسان ڄاڻون ٿا، جاوا ٻولي هڪ اعتراض تي مبني پروگرامنگ ٻولي آهي. ٻين لفظن ۾، بنيادي تصور، يعني بنياد جو بنياد، اهو آهي ته هر شيء هڪ شئي آهي. شيون ڪلاس استعمال ڪندي بيان ڪيون ويون آهن. ڪلاس، موڙ ۾، رياست ۽ رويي جي وضاحت ڪن ٿا. مثال طور، هڪ بينڪ اڪائونٽ شايد اڪائونٽ ۾ رقم جي رقم جي صورت ۾ بيان ڪري سگهي ٿو ۽ رويي جو آهي جيڪو اڪائونٽ بيلنس کي وڌائي ۽ گھٽائي ٿو. جاوا ۾، طريقن جي ذريعي طريقا لاڳو ڪيا ويا آھن. طريقن جي وضاحت ڪرڻ سکڻ توهان جي جاوا مطالعي جي شروعات ۾ اچي ٿو. مثال طور، Oracle جي آفيشل ٽيوٽوريل ۾، عنوان هيٺ " Defining Methods ". هتي نوٽ ڪرڻ لاء ٻه اهم شيون آهن:
  • هر طريقو هڪ دستخط آهي. دستخط طريقي جي نالي ۽ ان جي ان پٽ پيٽرولن تي مشتمل آهي.
  • ھڪڙي موٽڻ جي قسم کي طريقن لاء بيان ڪيو وڃي. توھان ان جي طريقي جي اعلان ۾ ھڪڙي طريقي جي واپسي جي قسم جو اعلان ڪريو.
واپسي جو قسم طريقو دستخط جو حصو نه آهي. ٻيهر، اهو ان حقيقت جو نتيجو آهي ته جاوا هڪ مضبوط ٽائپ ڪيل ٻولي آهي ۽ مرتب ڪندڙ اهو ڄاڻڻ چاهي ٿو ته ڪهڙي قسم جا استعمال ڪيا ويا آهن ۽ ڪٿي، اڳ ۾ ۽ جيترو ممڪن ٿي سگهي ٿو. ٻيهر، اهو اسان کي غلطين کان بچائڻ لاء آهي. بنيادي طور تي، اهو سڀ ڪجهه سٺو سبب آهي. ۽ اهو مون کي لڳي ٿو ته هي هڪ ڀيرو ٻيهر اسان ۾ ڊيٽا کي هٿي ڏيڻ جي ثقافت کي ترتيب ڏئي ٿو. تنهن ڪري، واپسي جي قيمت جو قسم طريقن لاء بيان ڪيو ويو آهي. ۽ جاوا ۾ واپسي جو لفظ اصل ۾ واپسي ڪرڻ لاءِ استعمال ٿيندو آهي. جاوا واپسي لفظ - 1

جاوا ۾ واپسي ڇا ڪندو آهي

واپسي جو لفظ هڪ ڪنٽرول وهڪري جو بيان آهي، جيئن بيان ڪيو ويو آهي Oracle سبق ۾ هتي . توھان پڻ پڙھي سگھوٿا قدر ڪيئن موٽائجي " طريقي مان ھڪڙي قدر واپس ڪرڻ " سيڪشن ۾ سرڪاري ٽيوٽوريل. مرتب ڪندڙ احتياط سان ٽريڪ رکي ٿو ته ڇا اهو يقيني بڻائي سگهي ٿو ته هڪ طريقي جي واپسي جي قيمت طريقي جي مخصوص واپسي جي قسم سان ملي ٿي. اچو ته هڪ مثال تي غور ڪرڻ لاءِ Tutorialspoint جي آن لائن IDE استعمال ڪريون. اچو ته ابتدائي مثال ڏسو:
public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello World");
    }
}
جيئن اسان ڏسي سگهون ٿا، مکيه طريقو هتي جاري ڪيو ويو آهي، جيڪو پروگرام جي داخلا پوائنٽ آهي. ڪوڊ جون لائينون مٿي کان ھيٺ تائين جاري آھن. اسان جو مکيه طريقو هڪ قدر واپس نٿو ڪري سگهي. جيڪڏهن اسان اتي هڪ قدر واپس ڪرڻ جي ڪوشش ڪنداسين، اسان کي هڪ غلطي ملندي: "Error: Main method must return a value of type void" . انهي جي مطابق، طريقو صرف اسڪرين ڏانهن نڪرندو آهي. هاڻي اچو ته اسٽرنگ لفظي کي هڪ الڳ طريقي سان پيغام پيدا ڪرڻ لاءِ منتقل ڪريون:
public class HelloWorld {

    public static void main(String[] args) {
        System.out.println(getHelloMessage());
    }

    public static String getHelloMessage() {
        return "Hello World";
    }

}
جيئن ته اسان ڏسي سگهون ٿا، اسان واپسي جي قيمت کي ظاهر ڪرڻ لاء واپسي لفظ استعمال ڪيو، جيڪو اسان پوء پرنٽلن طريقي سان گذريو. GetHelloMessage طريقي جو اعلان ظاهر ڪري ٿو ته طريقو هڪ String واپس ڪندو . هي گڏ ڪرڻ واري کي اجازت ڏئي ٿو ته چيڪ ڪرڻ جي طريقي جي عملن سان مطابقت آهي ته اهو ڪيئن اعلان ڪيو ويو آهي. قدرتي طور تي، واپسي جو قسم بيان ڪيل طريقي جي بيان ۾ بيان ڪيل قدر جي قسم کان وسيع ٿي سگهي ٿو اصل ۾ ڪوڊ ۾ موٽايو ويو آهي، يعني اهم شيء اها آهي ته هڪ قسم جي تبديلي ممڪن آهي. ٻي صورت ۾، اسان کي گڏ ڪرڻ وقت هڪ غلطي ملندي: "Error: incompatible type" . رستي جي ذريعي، توهان وٽ شايد هڪ سوال آهي: واپسي کي ڪنٽرول فلو بيان ڇو سمجهيو ويندو آهي؟ ڇاڪاڻ ته اهو هڪ پروگرام جي عام مٿين-هيٺ وهڪري کي ٽوڙي سگهي ٿو. مثال:
public class HelloWorld {

    public static void main(String[] args) {
        if (args.length == 0) {
            return;
        }
        for (String arg : args) {
            System.out.println(arg);
        }
    }

}
جئين توهان مثال مان ڏسي سگهو ٿا، اسان جاوا پروگرام ۾ مکيه طريقي سان مداخلت ڪندا آهيون جيڪڏهن ان کي بغير دليلن جي سڏيو وڃي. اهو ياد رکڻ ضروري آهي ته جيڪڏهن توهان وٽ واپسي واري بيان کان پوءِ ڪوڊ آهي، اهو رسائي لائق نه هوندو. اسان جو سمارٽ ڪمپلر ان کي نوٽيس ڪندو ۽ توهان کي اهڙي پروگرام هلائڻ کان روڪيندو. مثال طور، هي ڪوڊ مرتب نٿو ڪري:
public static void main(String[] args) {
        System.out.println("1");
        return;
// we use output method after return statement, which is incorrect
        System.out.println("2");
 }
هن جي چوڌاري حاصل ڪرڻ لاء هڪ گندي هيڪ آهي. مثال طور، ڊيبگنگ جي مقصدن لاء، يا ڪنهن ٻئي سبب لاء. مٿي ڏنل ڪوڊ کي مقرر ڪري سگھجي ٿو واپسي واري بيان کي لفافي ۾ جيڪڏهن بلاڪ:
if (2==2) {
    return;
}

غلطي سنڀالڻ دوران بيان واپس ڪريو

اتي ڪجھ ٻيو تمام مشڪل آھي - اسان واپسي کي استعمال ڪري سگھون ٿا غلطي سنڀالڻ سان. مان فوري طور تي چوڻ چاهيان ٿو ته واپسي واري بيان کي ڪيچ بلاڪ ۾ استعمال ڪرڻ تمام، تمام خراب فارم آهي، تنهنڪري توهان کي ان کان بچڻ گهرجي. پر اسان کي هڪ مثال جي ضرورت آهي، صحيح؟ هتي اهو آهي:
public class HelloWorld {

    public static void main(String[] args) {
        System.out.println("Value: " + getIntValue());
    }

    public static int getIntValue() {
        int value = 1;
        try {
            System.out.println("Something terrible happens");
            throw new Exception();
        } catch (Exception e) {
            System.out.println("Cached value: " + value);
            return value;
        } finally {
            value++;
            System.out.println("New value: " + value);
        }
    }

}
پهرين نظر ۾، اهو لڳي ٿو ته 2 واپس ٿيڻ گهرجي، ڇو ته آخرڪار هميشه تي عمل ڪيو ويندو آهي. پر نه، واپسي جي قيمت 1 ٿي ويندي، ۽ آخرڪار بلاڪ ۾ متغير ۾ تبديلي کي نظر انداز ڪيو ويندو. ان کان علاوه، فرض ڪريو ته قيمت هڪ اعتراض تي مشتمل آهي ۽ اسان چئون ٿا value = null آخر ۾ بلاڪ. پوءِ اھو اعتراض، ناھي، ڪيچ بلاڪ ۾ واپس ڪيو ويندو. پر واپسي جو بيان صحيح طريقي سان ڪم ڪندو آخرڪار بلاڪ ۾. ظاهر آهي، توهان جا همراه توهان جي واپسي جي بيانن ۾ شامل ٿورڙي تعجب جي مهرباني نه ڪندا.

void.class

۽ آخر ۾. هتي هي عجيب تعمير آهي توهان لکي سگهو ٿا: void.class . هوم. ڇو ۽ ڇا مطلب آهي؟ اتي حقيقت ۾ مختلف فريم ورڪ ۽ مشڪل ڪيس آهن جن ۾ جاوا ريفليشن API شامل آهن جتي هي تمام ڪارائتو ٿي سگهي ٿو. مثال طور، توهان چيڪ ڪري سگهو ٿا ته ڪهڙي قسم جو طريقو واپس اچي ٿو:
import java.lang.reflect.Method;

public class HelloWorld {

    public void getVoidValue() {
    }

    public static void main(String[] args) {
        for (Method method : HelloWorld.class.getDeclaredMethods()) {
            System.out.println(method.getReturnType() == void.class);
        }
    }
}
اهو ڪارائتو ٿي سگهي ٿو ٽيسٽ فريم ورڪ ۾ جتي توهان کي طريقن ۾ حقيقي ڪوڊ کي تبديل ڪرڻ جي ضرورت آهي. پر هن کي ڪرڻ لاء، توهان کي اهو سمجهڻ جي ضرورت آهي ته هڪ طريقو ڪيئن ڪم ڪري ٿو (يعني ڪهڙي قسم جو اهو واپس اچي ٿو). مٿي ڏنل ڪوڊ ۾ مکيه طريقي کي لاڳو ڪرڻ لاء هڪ ٻيو طريقو پڻ آهي :
public static void main(String[] args) {
        for (Method method : HelloWorld.class.getDeclaredMethods()) {
            System.out.println(method.getReturnType() == Void.TYPE);
        }
 }
توهان پڙهي سگهو ٿا هڪ خوبصورت دلچسپ بحث ٻنهي جي وچ ۾ فرق جو اسٽيڪ اوور فلو تي: java.lang.Void ۽ void جي وچ ۾ ڇا فرق آهي؟
تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION