আপনি পোষ্টেলের আইনের একটি বহিঃপ্রকাশ শুনে থাকতে পারেন : "আপনি যা প্রেরণ করেন তাতে রক্ষণশীল হন, আপনি যা গ্রহণ করেন তাতে উদার হন।"
বেশিরভাগ ক্ষেত্রে এটি কোড পুনরায় ব্যবহারযোগ্যতা সর্বাধিকীকরণ সম্পর্কে। এটি কেন সহায়তা করে তা প্রমাণ করার জন্য মামলাগুলির সামনে আসা সহজ। জাভা Iterable<T>
উদাহরণ হিসাবে বিবেচনা করুন । শুধু আপনার পদ্ধতি আছে সব মাধ্যমে পুনরুক্তি হয়, তাহলে T
একটি থাকার, এস Iterable<T>
হিসাবে আপনার প্যারামিটার প্রকার আপনি 60 টিরও বেশি বিল্ট-ইন ক্লাস, যে ইন্টারফেস বাস্তবায়ন কোনো কাস্টম শ্রেণীর উল্লেখ না যে পদ্ধতি ব্যবহার করতে পারবেন। যদি আপনি এটিকে সীমাবদ্ধ রাখেন, বলুন, Vector<T>
তবে যে কোনও কোড যা আপনার পদ্ধতিটিকে কল করে তাকে Vector<T>
প্রথমে রূপান্তর করতে হবে ।
অন্যদিকে, ফিরে একটি Iterable<T>
একটি পদ্ধতি থেকে কোড পরিমাণ ঐ যে নিতে আপনার ফেরত মান ব্যবহার করতে পারেন সীমিত Iterable<T>
প্যারামিটার। আপনি একটি খুব কংক্রিট টাইপ ফিরে আসেন তবে মত Vector<T>
, তারপর আপনার ফেরত মান কোনো পদ্ধতি যে একটি লাগে মধ্যে পাশ করা যাবে Serializable
, Cloneable
, Iterable<T>
, Collection<T>
, List<T>
, RandomAccess
, Vector<T>
, AbstractList<T>
, অথবা AbstractCollection<T>
, এবং এটি আশানুরূপ কাজ হবে।