Đó là một quyết định thiết kế Java và một quyết định mà một số người coi là sai lầm. Vùng chứa muốn Đối tượng và nguyên thủy không bắt nguồn từ Đối tượng.
Đây là một nơi mà các nhà thiết kế .NET đã học hỏi từ JVM và triển khai các kiểu giá trị và số liệu chung để quyền anh bị loại bỏ trong nhiều trường hợp. Trong CLR, các vùng chứa chung có thể lưu trữ các kiểu giá trị như một phần của cấu trúc vùng chứa bên dưới.
Java đã chọn thêm hỗ trợ chung 100% trong trình biên dịch mà không cần hỗ trợ từ JVM. JVM là chính nó, không hỗ trợ một đối tượng "non-object". Java generics cho phép bạn giả vờ không có trình bao bọc, nhưng bạn vẫn phải trả giá bằng hiệu suất của quyền anh. Điều này là QUAN TRỌNG đối với một số lớp chương trình.
Quyền anh là một sự thỏa hiệp kỹ thuật, và tôi cảm thấy nó là chi tiết thực hiện bị rò rỉ sang ngôn ngữ. Autoboxing là một đường cú pháp tốt, nhưng vẫn là một hình phạt về hiệu suất. Nếu bất cứ điều gì, tôi muốn trình biên dịch cảnh báo tôi khi nó tự động đóng hộp. (Đối với tất cả những gì tôi biết, có thể bây giờ, tôi đã viết câu trả lời này vào năm 2010).
Một lời giải thích tốt trên SO về quyền anh: Tại sao một số ngôn ngữ cần Quyền anh và Mở hộp ?
Và những lời chỉ trích về các generic Java: Tại sao một số người lại cho rằng việc triển khai các generic của Java là không tốt?
Trong cách bảo vệ của Java, rất dễ bị nhìn lại và chỉ trích. JVM đã vượt qua thử thách của thời gian và là một thiết kế tốt ở nhiều khía cạnh.