Neden't Jenerik Java ilkel türleri desteklemez?
Neden Java Jenerik nesneleri ile çalışmak ama ilkel türler ile değil?
Örneğin
Gen<Integer> inum = new Gen<Integer>(100); // works fine, but
Gen<int> inums = new Gen<int>(100); // is not allowed.
CEVAP
Java jenerik bir derleme oluşturmak derleyici tüm jenerik kullanır döner doğru türde yayınları için tamamen bir. Bu önceki JVM çalışma zamanları ile geriye dönük uyumluluk sağlamak için.
Bu:
List<ClassA> list = new ArrayList<ClassA>();
list.add(new ClassA());
ClassA a = list.get(0);
(kabaca) haline gelir
List list = new ArrayList();
list.add(new ClassA());
ClassA a = (ClassA)list.get(0);
Yani, jenerik olarak kullanılan herhangi bir şey Nesne için convertable (bu örnekte get(0)
Object
bir döner) ve ilkel türler değil. Jenerik olarak kullanılabilir.
Ayrı bir konu C# - jenerik doğrudan çalışma zamanı, bu kadar ilkel bir tür bir parçası olarak uygulanırolabilir- CLR kullanıldıkları gibi temel öğeler ve yapılar için genel sınıflar yeni sürümlerini oluşturur. Tek dezavantajı (kadar .4 NET) genel kovaryans veya contravariance izin verildi, Java (genel tanımlar super
extends
kelimeleri görmek) aksine
İnsanlar neden hala Java ilkel türleri...
Neden Java Koleksiyonları doğrudan İlk...
Neden't Java imzasız değer vermez...
Liste<Köpek> Listenin alt<Hay...
Java jenerik - neden "T" uzan...