อาจเป็นไปได้ว่าคุณได้ยินการคาดการณ์ของกฎหมายของ Postel : "จงระมัดระวังในสิ่งที่คุณส่งให้เสรีในสิ่งที่คุณยอมรับ"
ส่วนใหญ่จะเกี่ยวกับการเพิ่มความสามารถในการนำกลับมาใช้ของรหัสให้มากที่สุด มันง่ายที่จะเกิดกรณีเพื่อแสดงให้เห็นว่าทำไมมันถึงช่วยได้ พิจารณา Java 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>, และมันจะทำงานตามที่คาดไว้