5
เหตุใดจึงไม่อนุญาต“ ขั้นสุดท้าย” ในวิธีส่วนต่อประสาน Java 8
หนึ่งในคุณสมบัติที่มีประโยชน์ที่สุดของ Java 8 คือdefaultวิธีการใหม่ในส่วนต่อประสาน มีสองเหตุผลหลัก (อาจมีเหตุผลอื่น) ทำไมพวกเขาถึงได้รับการแนะนำ: ให้การใช้งานเริ่มต้นจริง ตัวอย่าง:Iterator.remove() อนุญาตให้ใช้กับวิวัฒนาการ JDK API ตัวอย่าง:Iterable.forEach() จากมุมมองของนักออกแบบ API ของผมจะชอบที่จะสามารถใช้การปรับเปลี่ยนวิธีการอื่น ๆ finalบนอินเตอร์เฟซเช่น สิ่งนี้จะเป็นประโยชน์เมื่อเพิ่มวิธีอำนวยความสะดวกป้องกันการแทนที่ "โดยไม่ตั้งใจ" ในการใช้คลาส: interface Sender { // Convenience method to send an empty message default final void send() { send(null); } // Implementations should only implement this method void send(String message); } …