লাম্বডা এক্সপ্রেশনগুলি আপনি জাভা দিয়ে সাধারণভাবে সমাধান করতে পারে এমন সমস্যার সেট পরিবর্তন করে না তবে কিছু সমস্যা সমাধান সহজতর করে তোলে ঠিক একই কারণে আমরা আর সমাবেশের ভাষায় প্রোগ্রামিং করছি না। প্রোগ্রামারের কাজ থেকে অপ্রয়োজনীয় কাজগুলি সরিয়ে ফেলা জীবনকে সহজ করে তোলে এবং এমন কিছু করতে দেয় যা আপনি অন্যথায় স্পর্শও করেন না, কেবলমাত্র আপনি যে পরিমাণ কোড তৈরি করতে হবে (ম্যানুয়ালি)।
লাম্বদা এক্সপ্রেশনগুলি কেবল কোডের লাইনগুলি সংরক্ষণ করে না। লাম্বদা এক্সপ্রেশন আপনাকে ফাংশনগুলি সংজ্ঞায়িত করতে দেয় , যার জন্য আপনি বেনামে অভ্যন্তরীণ ক্লাসগুলি আগে কাজের হিসাবে ব্যবহার করতে পারেন, এজন্য আপনি এই ক্ষেত্রে বেনামে অভ্যন্তরীণ শ্রেণিগুলি প্রতিস্থাপন করতে পারেন তবে সাধারণভাবে নয়।
সবচেয়ে উল্লেখযোগ্যভাবে, ল্যাম্বডা এক্সপ্রেশনগুলি স্বতন্ত্রভাবে সংজ্ঞাযুক্ত ফাংশনাল ইন্টারফেসের সাথে সংজ্ঞায়িত করা হয়েছে, সুতরাং উত্তরাধিকার সূত্রে প্রাপ্ত কোনও সদস্য নেই যা তারা অ্যাক্সেস করতে পারে, আরও, তারা ক্রিয়ামূলক ইন্টারফেস প্রয়োগের ধরণের উদাহরণ অ্যাক্সেস করতে পারে না। একটি ল্যামডা অভিব্যক্তি মধ্যেই this
এবং super
পার্শ্ববর্তী প্রেক্ষাপটে হিসাবে একই অর্থ আছে, তাও দেখতে এই উত্তর । এছাড়াও, আপনি আশেপাশের প্রসঙ্গে স্থানীয় ভেরিয়েবলকে ছায়ায় নতুন স্থানীয় ভেরিয়েবল তৈরি করতে পারবেন না। কোনও ফাংশন সংজ্ঞায়িত করার উদ্দেশ্যে কাজটি করার জন্য এটি প্রচুর ত্রুটি উত্সগুলি সরিয়ে দেয়, তবে এটি আরও বোঝায় যে অন্যান্য ব্যবহারের ক্ষেত্রে বেনামে অভ্যন্তরীণ শ্রেণিগুলি থাকতে পারে যা ল্যাম্বডা এক্সপ্রেশনে রূপান্তরিত করা যায় না, এমনকি যদি একটি কার্যকরী ইন্টারফেস প্রয়োগ করেও।
তদ্ব্যতীত, new Type() { … }
নির্মাণটি একটি নতুন স্বতন্ত্র উদাহরণ উত্পাদন করার গ্যারান্টি দেয় ( new
সর্বদা হিসাবে )। অজ্ঞাতনামা অভ্যন্তরীণ বর্গের দৃষ্টান্তগুলি সর্বদা তাদের বাহ্যিক দৃষ্টান্তের সাথে একটি static
প্রাসঙ্গিক ক্ষেত্রে তৈরি করা হলে একটি রেফারেন্স রাখে । বিপরীতে, ল্যাম্বডা এক্সপ্রেশনগুলি কেবল this
যখন প্রয়োজন হয় তখন একটি রেফারেন্স ক্যাপচার করে , যেমন যদি তারা অ্যাক্সেস করে this
বা কোনও static
সদস্য নয়। এবং তারা একটি ইচ্ছাকৃতভাবে অনির্ধারিত পরিচয়ের উদাহরণ তৈরি করে যা বাস্তবায়নগুলি রান-টাইমের সময়ে বিদ্যমান দৃষ্টান্তগুলি পুনরায় ব্যবহার করতে হবে কিনা তা স্থির করতে অনুমতি দেয় (এছাড়াও দেখুন " লাম্বডা এক্সপ্রেশনটি প্রতিবার কার্যকর হওয়ার সময় কীভাবে কোনও বস্তু তৈরি করে? ")।
এই মতভেদগুলি আপনার উদাহরণের জন্য প্রযোজ্য। আপনার বেনামে অভ্যন্তরীণ বর্গ গঠন সর্বদা একটি নতুন উদাহরণ তৈরি করবে, এটি বাইরের উদাহরণের জন্য একটি রেফারেন্স ক্যাপচার করতে পারে, তবে আপনার (Developer o1, Developer o2) -> o1.getName().compareTo(o2.getName())
এটি একটি নন-ক্যাপচারিং ল্যাম্বডা এক্সপ্রেশন যা সাধারণ বাস্তবায়নে একককে মূল্যায়ন করবে। আরও, এটি .class
আপনার হার্ড ড্রাইভে কোনও ফাইল তৈরি করে না ।
শব্দার্থক এবং কার্য সম্পাদন উভয় বিষয়ে পার্থক্য দেওয়া, ল্যাম্বডা এক্সপ্রেশনগুলি ভবিষ্যতে প্রোগ্রামাররা কিছু সমস্যা সমাধানের উপায় পরিবর্তন করতে পারে, অবশ্যই নতুন এপিআইগুলি নতুন ভাষার বৈশিষ্ট্যগুলি ব্যবহার করে ফাংশনাল প্রোগ্রামিংয়ের ধারণাগুলি গ্রহণ করে। আরও দেখুন জাভা 8 ল্যামডা মত প্রকাশ ও প্রথম শ্রেণীর মান ।
(o1, o2) -> o1.getName().compareTo(o2.getName())