เป็นการตัดสินใจออกแบบ Java และบางคนคิดว่าผิดพลาด คอนเทนเนอร์ต้องการ Objects และ primitives ไม่ได้มาจาก Object
นี่เป็นสถานที่แห่งหนึ่งที่นักออกแบบ. NET ได้เรียนรู้จาก JVM และใช้ประเภทคุณค่าและลักษณะทั่วไปที่ทำให้การชกมวยถูกกำจัดในหลาย ๆ กรณี ใน CLR คอนเทนเนอร์ทั่วไปสามารถจัดเก็บชนิดค่าเป็นส่วนหนึ่งของโครงสร้างคอนเทนเนอร์พื้นฐาน
Java เลือกที่จะเพิ่มการสนับสนุนทั่วไป 100% ในคอมไพเลอร์โดยไม่ได้รับการสนับสนุนจาก JVM JVM คืออะไรไม่สนับสนุนออบเจ็กต์ "non-object" ชื่อสามัญของ Java ช่วยให้คุณสามารถแสร้งทำเป็นว่าไม่มีเสื้อคลุม แต่คุณยังคงจ่ายราคาประสิทธิภาพของการชกมวย สิ่งนี้สำคัญสำหรับบางคลาสของโปรแกรม
การชกมวยเป็นการประนีประนอมทางเทคนิคและฉันรู้สึกว่ารายละเอียดการนำไปใช้งานรั่วไหลในภาษา การทำออโต้บ็อกซ์เป็นน้ำตาลที่ดี แต่ยังคงเป็นโทษต่อประสิทธิภาพ ถ้ามีอะไรฉันอยากให้คอมไพเลอร์เตือนฉันเมื่อมันทำงานอัตโนมัติ (สำหรับสิ่งที่ฉันรู้ตอนนี้ฉันเขียนคำตอบนี้ในปี 2010)
คำอธิบายที่ดีเกี่ยวกับ SO เกี่ยวกับการชกมวย: เหตุใดบางภาษาจึงต้องใช้ Boxing และ Unboxing
และคำวิจารณ์เกี่ยวกับ Java generics: ทำไมบางคนถึงอ้างว่าการใช้งานทั่วไปของ Java ไม่ดี?
ในการป้องกันของ Java เป็นเรื่องง่ายที่จะมองย้อนกลับไปและวิพากษ์วิจารณ์ JVM ได้ทนต่อการทดสอบของเวลาและเป็นการออกแบบที่ดีในหลาย ๆ ด้าน