2010-08-11 23 views

cevap

2

PKC - Hala K.

den

Teşekkür
argüman olarak bu kabul yerine geçenlerden sebebi ne almıyorum. Buna keyUniverse (dahili olarak) denir. Yorumlar söyler:

K. içeren değerleri (performans için önbelleğe alınmış) her EnumMap ihtiyaçlarını uygulamaları enum yaklaşık metainformation

5

, değerler, özellikle sayısı. Class nesnesi bu bilgiyi sağlar (IMO, belirli bir enum tanımlayıcı türü için gitmek daha iyi olurdu). Class mevcut değilse, her zaman HashMap'u bir miktar cezada kullanabilirsiniz. EnumMap benzeri Map gibi bir büyüyebilir/kaldırılamazsınız.

+0

HashMap boş bırakılamaz, ancak yalnızca bazı öğeler içeriyorsa ve tam olarak kullanılmıyorsa, bunun iyi olması gerekir. –

8

Tom's yanıtı doğru, ancak diğer noktanızı ele almak için: bu bilginin yalnızca K tür parametresinden çıkarılmasının nedeni type erasure kaynaklanmaktadır.

1

Generics bir derleme zamanı özelliğidir, ancak bu K sınıfı çalışma zamanında gereklidir, bu durumda jeneriklerin yapmayacağı bir şey.

2

Diğerlerinin belirttiği gibi, jenerikler bir derleyici özelliğidir. Jvm'nin jeneriklerin kendisi için gerçek bir desteği yoktur. Bu, genel bilgilerin çalışma zamanında kullanılamayacağı anlamına gelir. Bu EnumMap<K extends Enum> için

sınıf nesneleri hala itibariyle mevcut gibi java jenerik Bu sınırlama kurucusuna Jenerik argümanlar sınıflarını geçerek çalışılan K. hakkında herhangi bir bilgi vermeden zamanında bir EnumMap<Enum> olsun demektir Çalışma zamanı.

İlgili konular