วิธีการโมฆะ Java เป็นโมฆะกลับนี้


20

มีการสนทนาสองสามครั้งเกี่ยวกับ SO เกี่ยวกับเมธอด setter ที่ส่งคืนชนิด "this" และดูเหมือนว่า java 7 มีข้อเสนอของวิธีการโมฆะส่งกลับนี้ แต่ข้อเสนอนี้ไม่สามารถใช้กับคุณสมบัติของ Java 7 ได้ ฉันไม่พบว่าข้อเสนอนี้ถูกย้ายไปยังจาวา 8 หรือในอนาคตหรือถูกยกเลิกไปอย่างสมบูรณ์แล้ว ใช่ไหม?

ลิงก์อ้างอิง - /programming/31584/design-java-and-returning-self-reference-in-setter-methods


3
จะเป็นการดีหากมีลิงก์ไปยังการสนทนาที่คุณกล่าวถึงในคำถามเพื่อให้เป็นประโยชน์สำหรับผู้อื่นและจะช่วยให้พวกเขาเข้าใจคำถามมากขึ้น
ManuPK

แก้ไขคำถามของฉัน
Tarun

คำตอบ:


11

ฉันดูเหมือนจะไม่พบแหล่งที่มาของสิ่งนั้น แต่ฉันเชื่อว่าคุณสมบัตินี้ลดลงอย่างสมบูรณ์ มีหลายเหตุผลที่ฉันนึกถึง:

  • ประสิทธิภาพ - voidตอนนี้แต่ละวิธีมี opcode ที่ให้ผลตอบแทนพิเศษและทุกสถานที่ซึ่งวิธีการนี้เรียกว่าความต้องการโดยปริยายpopยกเว้นว่าจะใช้วิธีการผูกมัดจริง

  • ความเข้ากันได้ย้อนหลัง - การคอมไพล์กับฟีเจอร์นี้ทำให้โค้ดย้อนกลับไม่เข้ากันเพราะสัญญาของทุกvoidวิธีมีการเปลี่ยนแปลง

แน่นอนว่าสิ่งนี้สามารถนำไปใช้กับคอมไพเลอร์ได้ ( วิธีการเรียกใช้บนvoidหรือไม่คุณอาจหมายถึงthisให้ฉันเพิ่มสิ่งนี้โดยปริยาย ) ไม่รู้ว่าอะไรคือข้อเสียของวิธีการนี้


1
คอมไพเลอร์จะต้องสนับสนุนคุณสมบัตินี้ (ดังนั้นรหัสการโทรจะรวบรวม) และมันสามารถบันทึกวัตถุที่เรียกและใช้อีกครั้งโดยไม่ต้องเปลี่ยนวิธีการโทร
Peter Lawrey

ฟีเจอร์ของ OpenJDK ในลักษณะนี้ได้รับการจัดการเป็นข้อเสนอการปรับปรุง JDK (JEPs) และแน่นอนว่านี่ไม่ได้อยู่ในรายการอีกต่อไป
Martijn Verburg

3

ฉันไม่เชื่อว่าสิ่งนี้เคยถูกเสนออย่างเป็นทางการสำหรับการจุติของ Project COIN ในปี 2009 หน้านี้อ้างเพื่อแสดงรายการข้อเสนอทั้งหมดและฉันไม่เห็นข้อเสนอที่สอดคล้องกัน

หากไม่มีการเสนอจะไม่ได้รับการพิจารณา

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.