Bu bir Java tasarım kararıydı ve bazılarının bir hata olarak gördüğü bir karar. Kapsayıcılar Nesneleri ister ve ilkeller, Nesneden türetilmez.
Bu, .NET tasarımcılarının JVM'den öğrendiği ve birçok durumda kutulamanın ortadan kaldırılması için değer türleri ve jenerikleri uyguladığı bir yerdir. CLR'de, genel kapsayıcılar, temel kapsayıcı yapısının bir parçası olarak değer türlerini depolayabilir.
Java, JVM desteği olmadan derleyiciye% 100 genel destek eklemeyi seçti. JVM olduğu gibi, "nesne olmayan" bir nesneyi desteklemez. Java jenerikleri, paketleyici yokmuş gibi davranmanıza izin verir, ancak yine de boks performans fiyatını ödersiniz. Bu, belirli program sınıfları için ÖNEMLİDİR.
Boks teknik bir uzlaşmadır ve bunun dile sızan uygulama detayı olduğunu düşünüyorum. Otomatik kutulama güzel sözdizimsel şekerdir, ancak yine de bir performans cezasıdır. Bir şey olursa, derleyicinin otomatik kutuya girdiğinde beni uyarmasını isterim. (Tüm bildiğim, şimdi olabilir, bu cevabı 2010'da yazdım).
SO hakkında boks hakkında iyi bir açıklama: Neden bazı diller Boks ve Kutudan Çıkarma gerektirir?
Ve Java jeneriklerinin eleştirisi: Neden bazıları Java'nın jenerik uygulamasının kötü olduğunu iddia ediyor?
Java'nın savunmasında geriye dönüp eleştirmek kolaydır. JVM, zaman testine dayanmıştır ve birçok açıdan iyi bir tasarımdır.