ইন জাভার লুকায়িত বৈশিষ্ট্য শীর্ষ উত্তর উল্লেখ ডাবল বন্ধনী সূচনা , একটি সঙ্গে খুব enticing শব্দবিন্যাস:
Set<String> flavors = new HashSet<String>() {{
add("vanilla");
add("strawberry");
add("chocolate");
add("butter pecan");
}};
এই আইডিয়োম এটিতে একটি উদাহরণ ইনিশিয়ালাইজার সহ একটি বেনামে অভ্যন্তরীণ শ্রেণি তৈরি করে, যা "সম্বলিত সুযোগে কোনও [...] পদ্ধতি ব্যবহার করতে পারে"।
মূল প্রশ্ন: এটি যেমন শোনাচ্ছে ততটা অক্ষম ? এর ব্যবহার কি এক-বন্ধের সূচনাতে সীমাবদ্ধ করা উচিত? (এবং অবশ্যই দেখানো হচ্ছে!)
দ্বিতীয় প্রশ্ন: নতুন হ্যাশসেটটি অবশ্যই "এই" ইনস্ট্যান্স ইনিশিয়ালাইজারে ব্যবহৃত হতে হবে ... কেউ কি প্রক্রিয়াটির বিষয়ে আলোকপাত করতে পারে?
তৃতীয় প্রশ্ন: এই আইডিয়মটি কি প্রোডাকশন কোডে ব্যবহার করা খুব অস্পষ্ট ?
সংক্ষিপ্তসার: খুব, খুব সুন্দর উত্তর, সবাইকে ধন্যবাদ। প্রশ্নে (3), লোকেরা অনুভূত হয়েছিল যে বাক্য গঠনটি পরিষ্কার হওয়া উচিত (যদিও আমি মাঝে মাঝে মন্তব্য করার পরামর্শ দিই, বিশেষত যদি আপনার কোডটি এমন বিকাশকারীদের কাছে প্রেরণ করা হয় যা সম্ভবত এটির সাথে পরিচিত নয়)।
প্রশ্নে (1), উত্পন্ন কোডটি দ্রুত চালানো উচিত। অতিরিক্ত .class ফাইলগুলি জার ফাইলের বিশৃঙ্খলা সৃষ্টি করে এবং প্রোগ্রামটি কিছুটা ধীরে ধীরে শুরু করে (এটি পরিমাপ করার জন্য @ কুলবার্ডকে ধন্যবাদ)। @ থিলো উল্লেখ করেছিলেন যে আবর্জনা সংগ্রহ ক্ষতিগ্রস্থ হতে পারে এবং অতিরিক্ত বোঝা শ্রেণীর জন্য মেমরির ব্যয় কিছু ক্ষেত্রে একটি কারণ হতে পারে।
প্রশ্ন (2) আমার কাছে সবচেয়ে আকর্ষণীয় বলে প্রমাণিত হয়েছিল। আমি যদি উত্তরগুলি বুঝতে পারি তবে ডিবিআইতে যা ঘটছে তা হ'ল বেনামে অভ্যন্তরীণ বর্গটি নতুন অপারেটর দ্বারা তৈরি করা অবজেক্টের শ্রেণিকে প্রসারিত করে এবং তাই উদাহরণটি তৈরির ক্ষেত্রে একটি "এই" মান রয়েছে। খুব ঝরঝরে.
সামগ্রিকভাবে, ডিবিআই আমাকে একটি বৌদ্ধিক কৌতূহল হিসাবে চিহ্নিত করে। কুলবার্ড এবং অন্যরা আপনাকে নির্দেশ করে যে আপনি অ্যারেএস.এললিস্ট, ভারার্গস পদ্ধতি, গুগল সংগ্রহ এবং প্রস্তাবিত জাভা 7 সংগ্রহের আক্ষরিক সাথে একই প্রভাব অর্জন করতে পারেন। স্কেলা, জেরুবি এবং গ্রোভির মতো আরও নতুন জেভিএম ভাষাও তালিকা তৈরির জন্য সংক্ষিপ্ত স্বরলিপিগুলি সরবরাহ করে এবং জাভা দিয়ে ভালভাবে আন্তঃসংযোগ স্থাপন করে। ডিবিআই ক্লাসপথকে গুঁড়িয়ে দিয়ে ক্লাস লোডকে কিছুটা কমিয়ে দেয় এবং কোডটিকে একটি বাছাই করে তোলে, আমি সম্ভবত এ থেকে দূরে থাকি। যাইহোক, আমি এই বন্ধুর কাছে এই বসন্তটি বয়ে আনার পরিকল্পনা করছি যিনি সবেমাত্র তার এসসিজেপি অর্জন করেছেন এবং জাভা শব্দার্থক সম্পর্কে ভাল প্রকৃতির জোস্টগুলি ভালবাসেন! ;-) ধন্যবাদ সবাইকে!
7/2017: বেলডাংয়ের ডাবল ব্রেস প্রারম্ভিককরণের একটি ভাল সংক্ষিপ্তসার রয়েছে এবং এটিকে একটি বিরোধী নিদর্শন হিসাবে বিবেচনা করে।
12/2017: @ বাসিল বাউর্ক নোট করেছেন যে নতুন জাভা 9-এ আপনি বলতে পারেন:
Set<String> flavors = Set.of("vanilla", "strawberry", "chocolate", "butter pecan");
এটা নিশ্চিতভাবে যেতে হবে। আপনি যদি পূর্ববর্তী সংস্করণটির সাথে আটকে থাকেন তবে গুগল সংগ্রহের ইমটুটেবলসেটটি একবার দেখুন ।
Set<String> flavors = Set.of( "vanilla" , "strawberry" , "chocolate" , "butter pecan" ) ;
flavors
একটি হতেHashSet
, কিন্তু হায় এটা একটি বেনামী উপশ্রেণী হয়।