0:00
लेट गैस आज के इस वीडियो में लोग बात करने वाले हैं लैमडा एक्सप्रेशन के बारे में और देखेंगे यहां पर क�
0:07
लैमडा एक्सप्रेशन को क्यों इस्तेमाल करना है क्या एक्शन रीजन है कि हम लोगों ने लैमडा एक्सप्रेशन को यूज करन�
0:13
समझा कि यार हां यह भी कोई चीज है जो हम यूज करना चाहेंगे और क्या होती है हमारी एनोनिमस क्लास इन स�
0:19
चीजों के बारे में हम लोग जो है सीखेंगे तो यहां पर हम लोग क्या करेंगे सबसे पहले मैंने यह पर यह यूअ�
0:27
डाला उसके बाद भी आ गया वाओ जिसे इस गुड शायद यहाँ पर यह ऑटोमाटिकली फाल्डू करेक्टर्स को ढालेत�
0:34
है बट यहाँ पर में बात यह है कि आप लोगों को एक्सेस करना ही प्ले लिस्ट अगर आप लोगों नहीं कर रही ह�
0:38
यह वीडियो होने वाला है इस प्ले लिस्ट का पार्ट अब हम लोग क्या करेंगे जल्दी से नोट्स पर आएंगे और यहां पर मैंने आप लोगों को बताया है कि लैमडा एक्सप्रेशन जो हैं वो आपके जावा 8 से आड हुए हैं लैमडा एक्सप्रेशन क्या करते हैं द�
1:08
देव एच अंडरस्कोर और यहाँ पर चुपचाप नंबर देख लूंगा किसका नंबर देखूंगा अपने वीडियो नंबर देखूंगा कौन सा वीडियो नंबर चल रहा है और यहाँ पर हम लोग लिखेंगे लैमडा ठीक है और यहाँ पर हमारी क्लास बन चुकी है मैं �
1:38
लोगों एक क्लास बनाकर दिखाता हूं क्लास एन ओनी डेमो मान लो मैं यह क्लास बनाता हूं ठीक है और यहां प�
1:46
जिस तरह से हम लोगों ने मैं कोई और चैनल खोलता हूं यह विनारिटेंस वगैरह कर रहे थे तब हम लोगों ने बहु�
1:53
एक्सेंपल्स देगी थे डाइनामिक मेथड डिस्पैच वगैरह के तो जरा इस क्लास को खोलते हैं और यहां पर देख�
1:59
जो डाइनामिक मेथड डिस्पैच देखा था तो हमने देखा था कि जो यहां पर अगर हमारा फोन का ऑब्जेक्ट बना हुआ ह�
2:06
जो obj टाइप है वो फोन है बट आक्शल में object स्मार्टफोन का ह�
2:10
इस चीज हमने देखी नहीं है dynamic method dispatch में आप पीछे देख सकते हैं वीडियो मुझे नहीं लगता कि आप लोगों की जरूरत पड़ेगी अभ�
2:16
अगर आप जहां से देख रहे हो इस course को तो मैंने यहाँ पर Anony demo करके class बना लिय�
2:22
अब मान लो कि मैं यहाँ पर जो Anony demo बना रहा हू�
2:25
इसके अंदर मैं एक method डालता हूँ कोई भी method हो सकता ह�
2:30
उस method का नाम मैं यहाँ पर लिख देता हूँ void display और काफी demo के लिए यहाँ पर display को use किया आता ह�
2:36
public word display इसको मैं कर देता हूँ और system.out.println लिख देता हूँ यहाँ पर hello ठीक है अब यहाँ पर हम क्या करेंगे एक interface बनाएंगे जल्दी से और यार मैं कोशिश तो यह करूँगा कि कोई interface अगर बना हुआ है हमारा बना बना है मुझे मिल जाता है तो मैं यार उस interface को copy कर लू�
3:06
बनाता हूँ जिसका नाम मैं रख देता हूँ meth और एक all method बनाता हूँ meth2 रख देता हूँ meth1 meth2 कर लेते है�
3:14
interface horn bicycle बना दिया बट मैं यहाँ पर demo ano के नाम से बना देता हूँ और मालो यह class implement कर रही ह�
3:23
demo.no को ठीक है अब यहाँ पर obviously यह implement कर रही है demo.no को तो यहाँ पर मुझसे कह�
3:29
जा रहा है कि भाई math1 और math2 को implement करो तो मुझे यहाँ पर क्या करना पड़ेगा math1 औ�
3:33
math2 दोनों को implement करना पड़ेगा क्योंकि अगर मैं इन दोनों methods को implement नहीं करूँग�
3:38
तो दिल नॉट अलाउट तो मैं यहाँ पर अपनी इंटेलिज़ आईडी का आईडिया का इस्तेमाल करूंगा और यहाँ पर एनोनी डेमो की मेरट्स को मैं ओवर राइट कर दूँगा ठीक है यह मैंने करके एनोनी डेमो बना लिये और यहाँ पर अब मैं क्या कर सकता हूँ �
4:08
फॉर मस्टाटिक कॉंटेक्स्ट यह लोग देखते हैं यहां पर क्या गरबर हो गई है तो मैं यहां पर क्या करूंगा इ�
4:14
इंटरफेस को इस क्लास को बाहर निकाल दूंगा इस क्लास के कुछ इस तरह से मैं बाहर निकाल दूंगा इसको हाई अर्थ अ�
4:21
math1 run I am math1 copy I am math2 I am math1 I am math2 anonymous classes obviously math1 call class class use Anony demo class directly
4:57
Anony demo या फिर मैं कुछ इस तरह से कर सकता हू�
5:01
कि मैं इस interface का मैं आपको demo no बना सकता हूँ औ�
5:07
reference ले सकता हूँ interface का और जो मैं object बनाओंगा actual वो मैं एक class का बनाओंग�
5:13
किस class का बनाओंगा एक ऐसी class का बनाओंगा जिसका कोई नाम ही नहीं ह�
5:17
ऐसी class कैसे हो सकती है आप बिल्कुल हो सकती है ऐसी class को क्या कहते है ऐसी class को कहते है anonymous class अब देखो मैं किस तरह से syntax लिखूँगा और इसके बाद मैं लिखूँगा new और आप यहाँ पर देखो demo ano और एक bracket और triple dot यहाँ पर आ गए मैं इसको select करूँगा तो देखो इसका automatically मेरे लिए दो methods override कर दिये यह समझ चुका है यह बता�
5:50
बावजूद भी एक class है, इसलिए इसको anonymous class बोलते हैं, मेरे कहने का मतल�
5:53
आप लोग समझो, यहाँ पर मैंने एक interface का reference बना लिय�
5:57
और उसके बाद मैंने कहा कि इसको एक object बना लो, इसको एक object
6:03
बना लो, जो की मैं बनाता, मेरी बात द्यान से सुनना इसको एक object बना ल�
6:09
जो कि मैं बनाता एक दूसरी class बना कर लेकिन अब मुझे वो class बनाने की ज़रूरत नहीं पड़�
6:14
आप समझ लो ना बात को अब यहाँ पर जो चीज बने यहाँ पर करिए क्लास बना के वो चीज मैं आप लोगो क�
6:20
तो यहां पर चीज को अच्छे से डेमोस्ट्रेट करने के लिए मैं एक चीज और करूंगा मैं यहां पर जरा जो मैं तरफ कर रह�
6:29
हूं इसको चेंज करूंगा अब इस चीज को बैक डेमोस्ट्रेट करने के लिए मैं आप पर जो रेफरेंस ले लूंगा वह ल�
6:34
अपनी demo.no का तो मैं demo.no का reference ले सकता हूँ और new.no demo बना सकता हू�
6:40
मैं अपना आपको वापस से दिखा दू मैं यहाँ पर demo.no क�
6:44
reference इसलिए ले रहा हूँ ताकि मैं आप लोगों यह दिखा सकूँ कि जो चीज़ मैंने यहाँ कर रही है वो चीज�
6:48
मैं ऐसे भी कर सकता हूँ, मैं इसको अभी run करूँगा, I am math1, print होकर उसके बाद भी आएगा
6:53
मैंने reference demo ano का ले लिया है, या नहीं कि मैं इसके methods को call कर सकता हूँ, जैसे कि मैंने आप लोगों को dynamic method dispatch में बताया था
6:59
अब अगर मैं इसको comment out कर दूँ, और ये चीज़ को uncomment कर दो जो कि मैंने अभी अभी बनाई थ�
7:03
तो आप लोग देखो मैंने demo.ano.obj is equal to एक नया object बनाया ह�
7:08
लेकिन ये नया object क्या है मैंने कैसे instantiate किया मैंने instantiate किया एक anonymous class की साहिता स�
7:15
ये anonymous class क्या करती है हम लोग देखेंगे क्या करती ह�
7:18
मैं यहाँ पर अगर obj.math1 करूँगा तो मैं exactly वो काम कर सकता हू�
7:23
जो कि शायद मैंने एक class को बनाने के बाद किया होता यहाँ पर मैंने obj.new यह बनाय�
7:29
मैंने actually math1 के अंदर यह content डाला नहीं है तो मैं math1 के अंदर वही content डाल देता हू�
7:33
जो कि मैंने यहाँ डाला है और मैट 2 के अंदर भी कंट्रोल C कंट्रोल V जो कि हम लोग बच्चवन से करते आ रहे हैं राइटली करके हम लोग रन करेंगे और आप लोग देखो यहाँ पर I am math 1 print होकर आ गया ह�
7:45
what does it mean, what does it mean meth1 print होकर क्यो�
7:50
आया यहाँ पर, इसकी वजह आप लोग समझो, meth1 print होकर इसलिए आया है क्योंकि मैंने एक object बनाया और मैंन�
7:55
कहा इसके meth1 को call कर दो, तो एक तरह से ये जो object है, ये बन�
7:59
एक anonymous class की साइता से, मैंने actual में class नहीं बनाई, उसक�
8:04
बावजूर में मैंने class बनाई just अपने इस object को बनाने के लिए इस obj नाम�
8:10
object को बनाने के लिए I hope आप anonymous class का concept समझ गए anonymous class
8:14
क्यों इस्तेमाल होती है मैं आप लोगों से अगर पूछूं anonymous class इस्तेमाल होती है एक expression
8:20
बनाने के लिए just एक काम आप लोगों करना है कि एक object बनाना ह�
8:24
तो आप लोग क्या उसके लिए पूरी class बनाओगे नहीं आप उसके लिए पूरी class नहीं बनाओग�
8:28
आप चाहोगे कि एक line में ही आपका काम हो जाए एक बार आपन�
8:32
anonymous class बनाई और उसके बाद आपने उस class से कोई नाता नहीं रखना है
8:36
तो आप लोग ऐसा कर सकते हैं, ठीक है, so I hope anonymous class का, जो आप लोगों को concept है
8:41
समझ में आ गया, मैं अब आप लोगों को, at this point, लेकर जाना चाहूँगा, anonymous classes के
8:46
documentation पर, anonymous, class, यह वाला anonymous नहीं है, यह वाला anonymous
8:51
एनोनिमस यह वाला यह वाला नोनिमस जो है करवा नोनिमस होता है ना यह वाला नोनिमस नहीं है यह देखो यह वाल�
9:01
नोनिमस नहीं है यह नोनिमस क्लास है ठीक है कंफ्यूज मत होना एनोनिमस क्लास में आप देखो यहां प�
9:06
और यहां पर देखो इन्होंने ठंग से बताया है मुझे पीछा क्लिमेंट पसंद है इसलिए मैंने आप लोगों को खोलकर दिखाय�
9:14
अपने पर देखो कि हमने यहीं पर इसको डिक्लेयर किया यहीं पर हमने इसको इसको इस्टेंशिएट कर दिया लेकि�
9:34
यहाँ पर हम लोगों को बहुत सारा रायता फैलाना पड़ा object obj use
9:48
अपनी इस class के object को एक बार, तो हम यहाँ पर anonymous classes का इस्तेमाल कर सकते है�
9:53
और यही बात यह नोटे डॉक्यूमेंटेशन हो बताई है they enable you to declare and instantiate a class at the same time they are like local classes
9:58
except that they do not have a name मैंने बता है उनका नाम नहीं होता ह�
10:02
use them if you need to use a local class only once
10:06
एक local class अगर आप लोगो सिर्फ एक बार सिर्फ just at a time आप लोगों को बनाने के लिए एक बार चाहि�
10:12
तो आप लोग anonymous classes को इस्तेमाल कर सकते हो आप और classes अपने package में add ना करे�
10:19
anonymous classes का इस्तेमाल करें तो ये था anonymous classes का concept now let's come to lambda expressions
10:24
lambda expressions आप लोगों को समझाता हूँ anonymous classes के बाद ही आता है lambda expressions का concept
10:29
अगर हम यहाँ पर चावा की documentation की बात करें और यहाँ पर lambda expressions क्या होते है�
10:35
मैं आप लोगों को दिखाना चाहता हूँ lambda expressions की definition वगैरा पढ़ने से पहल�
10:40
मैं यहाँ पर आप लोगों को मैं सबसे पहले इसको mark कर देता हूँ anonymous class
10:45
अब मैं आप लोगों को directly lambda expressions का demo दिखाऊंगा कि lambda expressions को किस तरह से आप लोग use कर सकते ह�
10:51
आप लोग यहाँ पर यह interface देख रहे हो interface demo no और उसके बाद void math 1
10:57
मैं आपर क्या करता हूँ एक बार के लिए मैं जरा इसको यहाँ पर comment out कर देता हू�
11:00
ये वाली जो class no demo बनाई है मैंने मुझे एक class नहीं चाहिए थी क्योंकि मैं anonymous class स�
11:05
अपना काम चला सकता था फिर मैं two को भी यहाँ पर comment out कर रहा हू�
11:08
तो ये एक functional interface हो गया मैंने आप लोगों को बताया था कि functional interface
11:12
एक ऐसा interface होता है जिसमें सिर्फ एक method होता है अब अगर मान लो कि यहाँ पर मैं एक object बनाना चाता हू�
11:19
जो की एक ऐसी class से आया है जो की इस interface को implement करती ह�
11:25
I repeat एक ऐसी class मैं बनाना चाता हूँ जो की इस interface को implement करती ह�
11:31
और उसके बाद मैं इस method को override करना चाता हूँ तो आप में से बहुत सारे लोग जिन्होंने ये course देखा है अभी तक so far को क्या करेंगे एक class बनाएंगे मालो मैंने कह दिया Harry Funk के नाम से class बनाओ और उसको implement करवाओ ये वाला जो हमारा demo NO है वो interface implement करवाओ और उसके बाद जो math 1 है उसको override करो मैं आपर intelligent idea द्वारा ये बल पर �
12:04
method one ये मैं इस तरह से print करवा सकता हूँ ठीक ह�
12:10
और उसके बाद मैं Harry Funk का एक object बना सकता हूँ और उसके बाद math one को मै�
12:14
run कर सकता हूँ ठीक है उस object पर ये तरीका जो है हमारे पा�
12:19
ये traditional classical तरीका है ये तो काम करेगा ही करेगा चलो यार एक बार ये तरीका भी देख लेते हैं, ठीक है
12:25
anonymous class जो मैंने बनाई है, इसका मैंने obj.math1 लिखा हुआ है, इसको ज़रा comment out करते हैं
12:30
in fact मैं ये पूरा ही comment out कर देता हूँ, just to avoid confusion, ठीक है
12:34
क्योंकि अब मैं आप लोग को यहाँ पर बता रहूँ, lambda expressions के बारे में lambda expressions
12:39
ठीक है अब हम लोग यहाँ पर क्या करेंगे कि जो मैंने आप लोग क�
12:43
harifunk नाम की class बनवाई है अब आप मान लो इसका एक object बनाना चाहते ह�
12:47
और उसको reference देना चाहते हो demo.no का तो आप इस तरह से बना सकते ह�
12:52
demo.no यह आप कर सकते हो और इसके बाद आप Harry Funk इस तरह से एक object बना सकते हो
12:59
is equal to new Harry Funk पर लिखूँगा object बनाने के लिए, और इसके बाद आप लोग क्या करोगे
13:04
new Harry Funk लिखने के बाद, obj.math1 इस पर चला सकते हो
13:08
और हाँ पर right लिख करोगे तो I am Math1 लिख कर आएगा, मैंने यहाँ पर method 1 लिखा जान मुझका ताकि इससे थोड़ा सा मैं अलग बना सकूं इसको ठीक ह�
13:16
आया method 1 यहाँ पर प्रेड़ दोकर आ रहा है जैसे कि आप लोग देख सकते है�
13:20
अब यहाँ पर मैं आप लोगों को यह दिखाना चाहता हूँ, कि इसको करने का एक छोटा तरीका है
13:25
एक shortcut तरीका है, आप लोगों को इतनी सारी typing करने की ज़रूरत नहीं है
13:29
और सिर्फ typing की बात नहीं होती है, Readability एक बहुत बड़ी चीज़ होती है Programming मे�
13:33
अगर आप अपने Code को किसी को दिखाओगे और वो इंसान इस Code को पढ़ेग�
13:37
और पढ़ने के बाद अगर उसको 1000 lines of Code दिखता ह�
13:41
विज़ अविज उसको 400 lines of Code दिखता है तो there is a high chance कि व�
13:44
400 lines of Code वाले Program को कम time में देख पाएग�
13:48
कम time में समझ पाएगा और उसी के साथ साथ उसको इस program स�
13:53
कुछ बनाने में या फिर इस program को use में लेने में बहुत ज़्यादा आसानी होग�
13:57
with that said हम लोग यहां पर इसको करने का एक और तरीका देखेंग�
14:01
हम इसको comment out करेंगे और उसी के साथ साथ हम लो�
14:04
इस class को comment out करेंगे, but wait a second आप लोग कहोगे इस class को क्यों comment out कर रहे ह�
14:08
हमें इस class की ज़रूरत नहीं है, मैं आप लोगों यहाँ पर lambda expression
14:12
के बारे में बताता हूँ, आप lambda expression का इस्तेमाल कर सकते ह�
14:16
directly एक ऐसे interface को implement करने वाल ये class का object बनाने के लि�
14:22
जिसका सिर्फ एक method है मैंने बहुत बड़ी line बोल दी मैं आपको दुबारा बताता हूँ हमने जो काम अभी यहाँ प�
14:27
harry fung class directly lambda expression easily how is it possible possible demo no obj is equal to
14:43
और आप यहाँ पर लिखें कुछ इस तरह से आपको new लिखने की जरूरत भी नहीं है आप उसके बाद कुछ ऐस�
14:49
लिख सकते हैं और आप लोग यहाँ पर लिख सकते हैं system.out.println और आप लिख सकते हैं I am method1
14:55
अब आप लोग यहाँ पर semicolon लगाना बस मत भूलना और अब अगर आप लोग यहाँ पर obj.met1 लिखते ह�
15:01
और इसको run करते हो अगर आप लोग surprise है तो आपको surprise होने की ज़रूरत नहीं ह�
15:06
क्योंकि यहाँ पर I am method 1 print होकर आएगा अगर मैं यहाँ पर लिख दूँ from this lambda
15:12
तो यहाँ पर from this lambda लिख कर आएगा तो कुल मिलाकर बात यह ह�
15:16
कि यह जो lambda expressions है यह आप लोग की जिंदगी को आसान बनाते हैं, आपके code को छोटा बनाते हैं, अगर आप लोगों को एक ऐसे object को बनाना है, जो की शायद आपने बनाया होता, पुराने java के किसी version को use करके, actual class बनाकर, उसका method बनाकर, और implement करवाकर, उसको interface, इतना कुछ आपको करने की जरू�
15:48
कर देना object के, और there you go, आप यहाँ पर इसको use कर सकते हो
15:52
इसको मैं one liner भी बना सकता हूँ, और it's a good practice, अगर इतने चोटे आपके lambda expressions हैं, तो आप उनको one liner बना दे
15:58
तो यह एक lambda expressions है, expression है, demo no obj is equal to this
16:04
अब अगर मान लो कि जो demo no obj है, अब मान लो इसमें एक parameter होता
16:09
अगर मान लो इसमें एक int a होता तो क्या मैं यहाँ प�
16:12
कोई number pass कर सकता हूँ यहाँ पर मैं क्या कुछ ऐसे लिख सकता हू�
16:16
a और फिर इसके बाद यहाँ पर plus a कुछ इस तरह से और फि�
16:20
यहाँ पर मैं 6 क्या मैं यह कर सकता हूँ definitely आप यह कर सकते ह�
16:24
और ये तो intuitively भी आप लोगों समझ में आई गया होगा कि आप ये कर सकते ह�
16:28
यहाँ पर आप लोगों ने A लिखा और directly आप लोगों ने यहाँ पर जो ह�
16:32
इसको A को use कर लिया अब आपने से कई लोग ये पूछ सकते हैं कि मैंने यहाँ पर specify क्यों नहीं किया क�
16:38
ए का जो type है data type वो क्या है मैंने यहाँ पर int a
16:42
क्यों नहीं लिखा यहाँ पर string a क्यों नहीं लिखा मैंने actually मैं यह इसलिए नही�
16:46
लिखा क्योंकि java is smart enough java इतना smart है कि जो यहाँ पर variable
16:51
pass होने वाला है java जानता है कि यार demo no obj is equal to एक lambda expression
16:58
बनाया गया है demo no एक interface है और ये interface जो है एक functional interface
17:04
है और इस functional interface में सिर्फ एक method है और यहाँ प�
17:09
एक method जो है वो ले रहा है int a यानि कि एक integer
17:13
ले रहा है तो जाहिर सी बात है कि जो चीज़ भी इसके अंद�
17:17
pass कराई जाएगी वो integer ही होगी तो यहाँ पर कोई surprise वाली बात है ही नही�
17:23
यह integer ही definitely होगी तो यहाँ पर आपको बार बार integer लिखन�
17:27
की जरूरत ना पड़े इसलिए Java कहता है यार इसका सिर्फ नाम लिख द�
17:31
और इसको method के अंदर use कर लो इस lambda expression के अंद�
17:35
use कर लो so I hope कि lambda expression आप लोगों को समझ में आ ग�
17:39
और lambda expression अब से आप लोग अपने java प्रोग्राम में ज़रूर यूज करोग�
17:43
यहाँ पर हम लोगों ने दो concepts के बारे में बढ़ा anonymous classes and lambda expressions
17:48
क्या आपको anonymous classes और lambda expressions को यूज करने की जो कहते है necessity है क्या आप लोग के उप�
17:55
एक foundation डाली गई है कि आपको use ही use करना है इसक�
17:59
the answer is no ऐसा कुछ नहीं है if you like अगर आपको बसन आता ह�
18:04
तो आप use करो it's a good practice अगर आप अपने code क�
18:08
compact and concise बनाना चाते हैं I hope कि आप लोगों समझ में आ गय�
18:12
कि lambda expressions क्यों इस्तेमाल करने हैं और इनको कैसे इस्तेमाल किया जाता ह�
18:16
I hope कि आप लोग lambda expressions को आप अपने future java programs ज़रूर इस्तेमाल करेंगे और अगर आप लोग android development
18:22
वगैरा करते हैं तो definitely आप लोग lambda expressions को बहुत जादा इस्तेमाल करेंग�
18:27
and at the same time आप लोग anonymous classes को भी बहुत जादा इस्तेमाल करेंगे believe me आ�
18:33
अगर Android development नहीं कर रहे हैं या आपने थोड़ा बहुत भी किया है तो Android
18:38
Studio में आप लोग warning देखते हैं कभी कभी कि this expression can be replaced with
18:43
lambda पर ऐसे से लिख कर आता है तो अब आप लोग को मालूम है कि उसका मतलब क्या होत�
18:48
होता है अगर आपने इस वीडियो को देख लिया, I hope कि ये चीज़ आपलोग के लिए helpful नहीं होगी, अगर आपलोगो�
18:51
ने complete Java tutorial for beginner से निन्दी की playlist access नहीं करी है तो आपलोग यहाँ click करक�
18:57
bookmark कर सकते हैं इस playlist को और यहाँ click करके आपलोग इसक�
19:01
save कर सकते हैं thank you so much guys for watching this video and i will see you next time