জাভা পদ্ধতিতে প্যারামিটার চূড়ান্ত ঘোষণা করার কোনও কার্যকারিতা কারণ আছে কি?
যেমন:
public void foo(int bar) { ... }
বনাম:
public void foo(final int bar) { ... }
ধরে নিলাম যে bar
এটি কেবল পঠিত এবং কখনই সংশোধিত হয়নি foo()
।
জাভা পদ্ধতিতে প্যারামিটার চূড়ান্ত ঘোষণা করার কোনও কার্যকারিতা কারণ আছে কি?
যেমন:
public void foo(int bar) { ... }
বনাম:
public void foo(final int bar) { ... }
ধরে নিলাম যে bar
এটি কেবল পঠিত এবং কখনই সংশোধিত হয়নি foo()
।
উত্তর:
স্থানীয় ভেরিয়েবল এবং পরামিতিগুলির জন্য ক্লাস ফাইলে চূড়ান্ত কীওয়ার্ডটি উপস্থিত হয় না, সুতরাং এটি রানটাইম কর্মক্ষমতাকে প্রভাবিত করতে পারে না। কোডার্সের অভিপ্রায়টি স্পষ্ট করা যা ভেরিয়েবলটি পরিবর্তন করা যায় না (যা অনেকে এর ব্যবহারের জন্য সন্দেহজনক কারণ হিসাবে বিবেচনা করে) এবং বেনামে অভ্যন্তর শ্রেণীর সাথে ডিল করে dealing
পদ্ধতিটিতে চূড়ান্ত সংশোধনকারীটির কোনও কার্যকারিতা লাভ রয়েছে কিনা তা নিয়ে প্রচুর বিতর্ক রয়েছে যেহেতু পদ্ধতিগুলি নির্বিশেষে, রানটাইমের সময় অনুকূলিতকরণ সংকলক দ্বারা পদ্ধতিগুলি অন্তর্ভুক্ত করা হবে। এই ক্ষেত্রে এটি শুধুমাত্র পদ্ধতির ওভাররাইডিং সীমাবদ্ধ করতে ব্যবহার করা উচিত।
চূড়ান্ত প্যারামিটারের একমাত্র সুবিধা হ'ল এটি বেনামে নেস্টেড ক্লাসে ব্যবহার করা যেতে পারে। যদি কোনও প্যারামিটারটি কখনও পরিবর্তন না করা হয়, তবে সংকলকটি ইতিমধ্যে এটি চূড়ান্ত পরিবর্তনকারী ছাড়াই স্বাভাবিক অপারেশনের অংশ হিসাবে সনাক্ত করবে। এটি অত্যন্ত বিরল যে অপ্রত্যাশিতভাবে প্যারামিটার বরাদ্দ হওয়ার কারণে বাগগুলি ঘটে থাকে - যদি আপনার পদ্ধতিগুলি ইঞ্জিনিয়ারিংয়ের এই স্তরের প্রয়োজনের জন্য বড় হয় তবে তাদের আরও ছোট করে দিন - যে পদ্ধতিগুলিতে আপনি কল করেন সেগুলি আপনার পরামিতিগুলি পরিবর্তন করতে পারে না।
ক্লাস লোডিংয়ের পরে চালিত সংকলক যেমন জেআইটি সংকলকগণ চূড়ান্ত পদ্ধতির সুবিধা নিতে পারে। ফলস্বরূপ, চূড়ান্ত ঘোষিত পদ্ধতিগুলির কিছু কার্যকারিতা সুবিধা থাকতে পারে।
http://www.javaperformancetuning.com/tips/final.shtml
ওহ এবং অন্য একটি ভাল সংস্থান
আমি ধারনা করি যে সংকলকটি সম্ভবত প্রাইভেট টাইপযুক্ত সমস্ত প্রাইভেট স্ট্যাটিক চূড়ান্ত ভেরিয়েবলগুলি মুছে ফেলতে পারে যেমন ইনট, এবং সি -+ ম্যাক্রোর মতো কোডগুলিতে সরাসরি ইনলাইন করে।
যাইহোক, এটি অনুশীলনে করা হয় তবে আমার কোনও ক্লু নেই, তবে কিছু স্মৃতি সঞ্চয় করার জন্য এটি করা যেতে পারে।