ধরা যাক আমি এমন একটি পদ্ধতি লিখছি যা মানচিত্রে ফিরে আসবে । এই ক্ষেত্রে:
public Map<String, Integer> foo() {
return new HashMap<String, Integer>();
}
কিছুক্ষণ চিন্তা করার পরে, আমি সিদ্ধান্ত নিয়েছি যে এই মানচিত্রটি তৈরি হয়ে যাওয়ার পরে এর কোনও কারণ নেই। এইভাবে, আমি একটি ইমটুটেবল ম্যাপটি ফিরিয়ে দিতে চাই ।
public Map<String, Integer> foo() {
return ImmutableMap.of();
}
আমি কি জেনেরিক মানচিত্র হিসাবে রিটার্নের ধরণটি ছেড়ে যাব বা আমি উল্লেখ করতে হবে যে আমি কোনও ইমটুটেবলম্যাপটি ফিরিয়ে দিচ্ছি?
এক দিক থেকে, ঠিক এই কারণেই ইন্টারফেসগুলি তৈরি করা হয়েছিল; বাস্তবায়ন বিশদটি গোপন করতে।
অন্যদিকে, যদি আমি এটি ছেড়ে চলে যাই তবে অন্যান্য বিকাশকারীরা এই বস্তুটি অপরিবর্তনীয় এই সত্যটি মিস করতে পারে। সুতরাং, আমি অপরিবর্তনীয় বস্তুর একটি বড় লক্ষ্য অর্জন করব না; পরিবর্তন করতে পারে এমন বস্তুর সংখ্যা হ্রাস করে কোডটিকে আরও স্পষ্ট করে তোলার জন্য। সবচেয়ে খারাপ, কিছুক্ষণ পরে, কেউ এই বস্তুটি পরিবর্তন করার চেষ্টা করতে পারে এবং এর ফলে রানটাইম ত্রুটি হবে (সংকলক এটি সম্পর্কে সতর্ক করবে না)।